我正在处理时区问题。我这里有一个2015-8-24 14:00:00格式的日期时间。我需要将它转换为时区(UTC-7:00)、亚利桑那州(UTC-7:00)和美国山区时间(美国和加拿大)。
我认为在转换它之后,时间应该是一样的,但是下面的代码是错误的:
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"));看到结果了吗?这是不同的。希望能得到参考。谢谢。
发布于 2015-08-24 08:28:52
如果您查看SupportsDaylightSavingTime属性,它应该会变得很明显-- Mountain Standard Time确实支持它,而US Mountain Standard Time确实支持而不是支持它(因此有一个小时的差异)。
https://stackoverflow.com/questions/32177314
复制相似问题