To understand this, walk the code.
You can see it work at https://dotnetfiddle.net/LLl1Za
using System; public class Program { public static void Main() { Console.WriteLine("Local Server Time Zone:{0}",TimeZoneInfo.Local.BaseUtcOffset); string tzse = "Eastern Standard Time"; string tzsw = "Pacific Standard Time"; TimeZoneInfo tzie = TimeZoneInfo.FindSystemTimeZoneById(tzse); TimeZoneInfo tziw = TimeZoneInfo.FindSystemTimeZoneById(tzsw); TimeSpan tzo = tzie.BaseUtcOffset; Console.WriteLine("Base Time Zone East:{0}",tzo); TimeSpan tzo2e = tzie.GetUtcOffset(DateTime.UtcNow); Console.WriteLine("Adjusted Time Zone East:{0}",tzo2e); Console.WriteLine("--------------------------------------------------------------------------------------"); DateTime myTime = DateTime.Now; Console.WriteLine("My Time:{0}",myTime); DateTimeOffset submittedDate = new DateTimeOffset(myTime).ToOffset(tzo2e); Console.WriteLine("Just Change Offset from My Time East:{0}",submittedDate); Console.WriteLine("--------------------------------------------------------------------------------------"); DateTimeOffset myUtcTime = DateTimeOffset.UtcNow; Console.WriteLine("UTC Time:{0}",myUtcTime); Console.WriteLine("as DateTime:{0}",myUtcTime.DateTime); DateTimeOffset forcedDate = TimeZoneInfo.ConvertTimeFromUtc(myUtcTime.DateTime, tzie); Console.WriteLine("Use Convert East:{0}",forcedDate); DateTimeOffset adjustedDate = forcedDate.ToOffset(tzo2e); Console.WriteLine("Adjusted to Timezone East:{0}",adjustedDate); Console.WriteLine("--------------------------------------------------------------------------------------"); //Applied responses from http://stackoverflow.com/questions/29425350/converting-date-from-one-timezone-to-another-when-both-date-types-are-datetimeof?noredirect=1 //Sometimes I don't understand why my google results are crap, then they come back beautifull. The original code was because I couldn't get the answer I needed from Bing and Google. //Later did the same search and POP, what I wanted was first line. Though my Intellisence is still foobar, and isn't showing all of the overrides. -_- DateTimeOffset west = TimeZoneInfo.ConvertTime(adjustedDate,tziw); Console.WriteLine("Adjusted to Timezone West:{0}",west); Console.WriteLine("--------------------------------------------------------------------------------------"); DateTime dtNewTest = new DateTime(2015,3,15); TimeSpan tsNewTestE = tzie.GetUtcOffset(dtNewTest); DateTimeOffset dtoNewTestE = new DateTimeOffset(dtNewTest,tsNewTestE); Console.WriteLine("East Constructor: {0}",dtoNewTestE); TimeSpan tsNewTestW = tziw.GetUtcOffset(dtNewTest); DateTimeOffset dtoNewTestW = new DateTimeOffset(dtNewTest,tsNewTestW); Console.WriteLine("West Constructor: {0}",dtoNewTestW); } }