我正在研究时区问题。我有一个UTC格式的日期时间2015-8-24 14:00:00
。我需要将其转换为时区(UTC-7:00)Arizona和(UTC-7:00)US Mountain Time(美国和加拿大)。
我认为在转换它之后,时间应该是相同的,但是下面的代码错了:
var utc = DateTime.Parse("2015-08-24 14:00:00") ;
//(UTC-7:00)Arzona
var _timeZone = TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time");
DateTime result = TimeZoneInfo.ConvertTime(utc, TimeZoneInfo.Utc, _timeZone);
var convertedResult = DateTime.SpecifyKind(result, DateTimeKind.Local);
// shows 2015-08-24 8:00:00 AM
Console.WriteLine(convertedResult.ToString("yyyy-MM-dd hh:mm:ss"));
// (UTC-7:00) US Mountain Time (USA & Canada)
var _timeZoneEx = TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time");
DateTime resultex = TimeZoneInfo.ConvertTime(utc, TimeZoneInfo.Utc, _timeZoneEx);
var convertedResultex = DateTime.SpecifyKind(resultex, DateTimeKind.Local);
// shows 2015-08-24 7:00:00 AM
Console.WriteLine(convertedResultex.ToString("yyyy-MM-dd hh:mm:ss"));
看到结果?这不一样。期待参考。 THX。
答案 0 :(得分:1)
如果您查看SupportsDaylightSavingTime
属性,它应该变得明显 - Mountain Standard Time
确实支持它,而US Mountain Standard Time
做 NOT 支持它(因此小时差异)。