Mega Code Archive

 
Categories / C# / Date Time
 

Choosing Between DateTime, DateTimeOffset, and TimeZoneInfo

using System; using System.Collections.ObjectModel; public class TimeOffsets {    public static void Main()    {       DateTime thisDate = new DateTime(2009, 3, 10, 0, 0, 0);       DateTime dstDate = new DateTime(2009, 6, 10, 0, 0, 0);       DateTimeOffset thisTime;       thisTime = new DateTimeOffset(dstDate, new TimeSpan(-7, 0, 0));       ShowPossibleTimeZones(thisTime);       thisTime = new DateTimeOffset(thisDate, new TimeSpan(-6, 0, 0));         ShowPossibleTimeZones(thisTime);       thisTime = new DateTimeOffset(thisDate, new TimeSpan(+1, 0, 0));       ShowPossibleTimeZones(thisTime);    }    private static void ShowPossibleTimeZones(DateTimeOffset offsetTime)    {       TimeSpan offset = offsetTime.Offset;       ReadOnlyCollection<TimeZoneInfo> timeZones;       Console.WriteLine("{0} could belong to the following time zones:", offsetTime.ToString());       timeZones = TimeZoneInfo.GetSystemTimeZones();            foreach (TimeZoneInfo timeZone in timeZones)       {          if (timeZone.GetUtcOffset(offsetTime.DateTime).Equals(offset)){             Console.WriteLine("{0}", timeZone.DisplayName);          }       }    }  }