首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TimeZoneInfo错误?

TimeZoneInfo错误?
EN

Stack Overflow用户
提问于 2011-07-04 13:31:02
回答 1查看 572关注 0票数 1

我在把时间从伦敦(UTC/UTC+1)转换为美国东部时间(UTC-5/UTC-4)时遇到问题。

在伦敦机器上运行UTC+1阶段的代码,

代码语言:javascript
复制
TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));

这将正确地将14:25:00到06:25:00从UTC+1转换为UTC-7

但是,如果时区是美国东部

代码语言:javascript
复制
TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time"));

这将导致错误地将14:25:00到08:25:00从UTC+1转换为UTC-4。

此外,

代码语言:javascript
复制
TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time").SupportsDaylightSavingTime

返回false

代码语言:javascript
复制
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time").SupportsDaylightSavingTime

返回真。

这是在.NET 3.5下运行的。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2011-07-09 21:05:10

它看起来确实是一个bug,要么是运行.NET平台上的错误时区信息,要么是.NET本身的错误信息。在我看来,您应该获得东部标准时间的true

如果您使用tz信息数据库,我很肯定您会得到较少的模糊结果。退房:http://www.codeproject.com/KB/dotnet/Using_time_zones_in_NET.aspx

并在这里了解有关开放时区数据库的更多信息:http://en.wikipedia.org/wiki/Tz_database

进一步的思考:很难说出这里的bug是什么。以东部标准时间为例。它从定义上说是东部沿海的冬季时间,在夏季东部标准时间并不真正存在。突然,该地区开始使用“东部夏令时间”。

中欧也是如此,它介于“中欧时间”和“中欧标准时间”之间。围绕时区名称的约定确实令人困惑,而且很多时候也是模棱两可。我只能重复一遍,如果您能够为您的平台和编程语言找到可靠的tz数据库API :使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6572197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档