两个时区是UTC-7但具有不同的日期时间外观

时间:2015-08-24 08:07:40

标签: c# .net datetime timezone utc

我正在研究时区问题。我有一个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。

1 个答案:

答案 0 :(得分:1)

如果您查看SupportsDaylightSavingTime属性,它应该变得明显 - Mountain Standard Time确实支持它,而US Mountain Standard Time NOT 支持它(因此小时差异)。