是否有针对中欧的通用 TimeZoneInfo 将 CET 和 CEST 纳入考虑?
我有一个应用程序正在执行以下操作:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
DateTimeOffset dto = new DateTimeOffset(someDate, tzi.BaseUtcOffset);
var utcDate = dto.ToUniversalTime().DateTime;
问题是这会返回错误的 utcDate,因为 BaseUtcOffset 是 +1 而不是 +2。似乎 CET 也有 DST,并且根据一年中的时间,它是 +1 或 +2。
首先,我想赞扬 mgnoonan 使用野田时间的回答:)但是如果你感觉不那么冒险......
您已经使用了正确的时区 - 但您不应该使用BaseUtcOffset http://msdn.microsoft.com/en-us/library/system.timezoneinfo.baseutcoffset.aspx这是有记录的与 DST 无关:
获取当前时区的标准时间与协调世界时 (UTC) 之间的时差。
当您不提供 DST 时,它不可能考虑 DSTDateTime
获取偏移量:)
假设someDate
is a DateTime
,你可以使用:
DateTimeOffset dto = new DateTimeOffset(someDate, tzi.GetUtcOffset(someDate));
Or just ConvertTimeToUtc http://msdn.microsoft.com/en-us/library/bb381744.aspx:
var utcDate = TimeZoneInfo.ConvertTimeToUtc(someDate, tzi);
请注意,如果您的本地时间由于夏令时转换而出现两次,或者根本没有出现,您应该弄清楚您想要做什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)