title: C# Add 1 day in specific TimeZone to DateTimeOffset
body: <p>I have an instance of <code>DateTimeOffset</code> and I need to add 1 day to it in specific <code>TimeZone</code> (W. Europe Standard Time) taking into account daylight saving rules (so it might result in <code>Offset</code> change). How can I do it without 3rd party libraries?</p>
  
  <p>Verifiable example:</p>
  
  <pre><code>using System;
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  
  namespace UnitTestProject
  {
      [TestClass]
      public class TimeZoneTests
      {
          [TestMethod]
          public void DateTimeOffsetAddDays_DaylightSaving_OffsetChange()
          {
              var timeZoneId = "W. Europe Standard Time";
              var utcTimestamp = new DateTimeOffset(2017, 10, 28, 22, 0, 0, TimeZoneInfo.Utc.BaseUtcOffset);
              var weuropeStandardTimeTimestamp = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcTimestamp, timeZoneId);
              Assert.AreEqual(new DateTime(2017, 10, 29), weuropeStandardTimeTimestamp.DateTime);
              Assert.AreEqual(TimeSpan.FromHours(2), weuropeStandardTimeTimestamp.Offset);
  
              var weuropeStandardTimeTimestampNextDay = AddDaysInTimeZone(weuropeStandardTimeTimestamp, 1, timeZoneId);
  
              Assert.AreEqual(new DateTime(2017, 10, 30), weuropeStandardTimeTimestampNextDay);
              Assert.AreEqual(TimeSpan.FromHours(1), weuropeStandardTimeTimestamp.Offset);
          }
  
          private DateTimeOffset AddDaysInTimeZone(DateTimeOffset timestamp, int days, string timeZoneId)
          {
              // this line has to be fixed:
              return timestamp.AddDays(days);
          }
      }
  }
  </code></pre>
  
  <p><code>AddDaysInTimeZone</code> method should be replaced with correct implementation.</p>
  
  <p>PS If it results in invalid/ambigous/skipped date, then it is fine to throw exception.</p>