using System.Globalization;
public static void Main()
DateTimeFormatInfo dateFormats = CultureInfo.CurrentCulture.DateTimeFormat;
var tzs = TimeZoneInfo.GetSystemTimeZones();
var timeZone = tzs.FirstOrDefault(x=>x.Id == "GMT Standard Time");
bool hasDST = timeZone.SupportsDaylightSavingTime;
TimeSpan offsetFromUtc = timeZone.BaseUtcOffset;
TimeZoneInfo.AdjustmentRule[] adjustRules;
Console.WriteLine("ID: {0}", timeZone.Id);
Console.WriteLine(" Display Name: {0, 40}", timeZone.DisplayName);
Console.WriteLine(" Standard Name: {0, 39}", timeZone.StandardName);
Console.Write(" Daylight Name: {0, 39}", timeZone.DaylightName);
Console.Write(hasDST ? " ***Has " : " ***Does Not Have ");
Console.WriteLine("Daylight Saving Time***");
offsetString = String.Format("{0} hours, {1} minutes", offsetFromUtc.Hours, offsetFromUtc.Minutes);
Console.WriteLine(" Offset from UTC: {0, 40}", offsetString);
adjustRules = timeZone.GetAdjustmentRules();
Console.WriteLine(" Number of adjustment rules: {0, 26}", adjustRules.Length);
if (adjustRules.Length > 0)
Console.WriteLine(" Adjustment Rules:");
foreach (TimeZoneInfo.AdjustmentRule rule in adjustRules)
TimeZoneInfo.TransitionTime transTimeStart = rule.DaylightTransitionStart;
TimeZoneInfo.TransitionTime transTimeEnd = rule.DaylightTransitionEnd;
Console.WriteLine(" From {0} to {1}", rule.DateStart, rule.DateEnd);
Console.WriteLine(" Delta: {0}", rule.DaylightDelta);
if (! transTimeStart.IsFixedDateRule)
Console.WriteLine(" Begins at {0:t} on {1} of week {2} of {3}", transTimeStart.TimeOfDay,
transTimeStart.DayOfWeek,
dateFormats.MonthNames[transTimeStart.Month - 1]);
Console.WriteLine(" Ends at {0:t} on {1} of week {2} of {3}", transTimeEnd.TimeOfDay,
dateFormats.MonthNames[transTimeEnd.Month - 1]);
Console.WriteLine(" Begins at {0:t} on {1} {2}", transTimeStart.TimeOfDay,
dateFormats.MonthNames[transTimeStart.Month - 1]);
Console.WriteLine(" Ends at {0:t} on {1} {2}", transTimeEnd.TimeOfDay,
dateFormats.MonthNames[transTimeEnd.Month - 1]);
Console.WriteLine("Hello World");