static void Main(string[] args) { //http://stackoverflow.com/questions/1987824/c-sharp-synchronizing-different-time-zones //http://stackoverflow.com/questions/179940/c-sharp-convert-utc-gmt-time-to-local-time //http://stackoverflow.com/questions/576740/get-timezone-from-datetime // local time(in my case it is GMT + 5:30) var localTime = DateTime.Now; var localTime1 = TimeZoneInfo.ConvertTime(localTime, TimeZoneInfo.Local); //GMT(in my case it is Local - 5:30) var utcTime = localTime.ToUniversalTime(); var utcTime1 = TimeZoneInfo.ConvertTimeToUtc(localTime, TimeZoneInfo.Local); var utcTime2 = TimeZoneInfo.ConvertTimeToUtc(localTime); var localTime2 = TimeZoneInfo.ConvertTimeFromUtc(utcTime2, TimeZoneInfo.Local); // If u receive this from other system, and knows it is UTC var receivedUtc = DateTime.SpecifyKind(utcTime, DateTimeKind.Utc); // .Parse thinks it is UTC(as it ends with Z), though it is local - it adds 5:30 var localTimeParsedFromZ = DateTime.Parse(localTime.ToString("u")); //We say it is UTC, so when we use .ToLocalTime, it is really 11 hours added to local time var localTimeParsedFromZWithKind = DateTime.SpecifyKind(localTimeParsedFromZ, DateTimeKind.Utc); Console.WriteLine("local time = " + localTime.ToString()); Console.WriteLine("local time = local time 1 is " + localTime.Equals(localTime1)); Console.WriteLine("local time = local time 2 is " + localTime.Equals(localTime2)); Console.WriteLine("localTime.ToString(u) = " + localTime.ToString("u")); Console.WriteLine("Time Parsed from 'localTime.ToString(u)' = " + localTimeParsedFromZ.ToString()); Console.WriteLine("local time = " + localTimeParsedFromZWithKind.ToLocalTime().ToString()); Console.WriteLine("utc time = " + utcTime.ToString()); Console.WriteLine("utc time = utc time 1 is " + utcTime.Equals(utcTime1)); Console.WriteLine("utc time = utc time 2 is " + utcTime.Equals(utcTime2)); Console.WriteLine("local time from utc = " + utcTime.ToLocalTime().ToString()); Console.WriteLine("received utc = " + receivedUtc.ToString()); Console.WriteLine("receivedUtc.ToString(u) = " + receivedUtc.ToString("u"));
foreach (TimeZoneInfo timeZone in TimeZoneInfo.GetSystemTimeZones()) Console.WriteLine(timeZone.Id);
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); var pst = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); var estLocal = TimeZoneInfo.ConvertTime(localTime, est); var pstLocal = TimeZoneInfo.ConvertTime(localTime, pst);
}
No comments:
Post a Comment