科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件夏令时在.NET中的处理方法

夏令时在.NET中的处理方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这篇文章对夏令时进行了详细的介绍,阐述了夏令时的改变对您的软件可能会造成的影响,并为.NET程序员提供了相关帮助。

作者:builder.com.cn 2007年4月11日

关键字: Tony Patton DotNet

  • 评论
  • 分享微博
  • 分享邮件

现在IT业界讨论的话题集中在美国政府对夏令时的改变以及这一改变对计算机资源的影响,关注的焦点集中在操作系统上,不过这对应用软件程序员也造成了不少的问题。

这篇文章对夏令时进行了详细的介绍,阐述了夏令时的改变对您的软件可能会造成的影响,并为程序员提供了相关的帮助。

更多的日光

20058月,乔治布什总统签署了能源策略法案(Energy Policy Act of 2005),根据此项法案的规定,美国的夏令时时间会有所延长,夏令时会提前三周开始(从三月十一日),并延长一周结束(在十一月四日),这样,新的夏令时时期比以往延长了四周。

如果您的时区设置错误,您的系统时钟会延误一个小时,在您的计算机上运行的软件可能无法正确显示时间。微软公司为操作系统和相关的产品都提供了补丁,但是对于基于.NET的软件产品,微软并没有提供更多的信息来解决夏令时变更所造成的问题。

处理夏令时

对于.NET开发者而言,在实施夏令时的地区要处理夏令时所造成的时间问题(在夏威夷、萨摩亚群岛、波多黎各、关岛、维尔京群岛和亚利桑那州的大部分地区并不实行夏令时)。在实施夏令时的时区,春季时时钟从标准时间调整为夏令时,时间会提前一个小时,而到秋季的时候时间会向后调一个小时。

您可能会注意到时间的变化,尤其是,您会遇到一天出现23个小时和25个小时的情况,在这些情况下,如果您的软件需要使用系统时间并跨越夏令时,您的代码需要针对时间的变化调整这些时间值。

如果时间-日期值是通过用户输入获取的,那么微软建议开发者对基于用户输入的数据使用DateTime.Parse方法对特定值进行确认。在时间向后调整一个小时的日子(23个小时)以及调整为25个小时的日子,时间值包含了这两重含义。为了实现这些时间的调整,您需要确认夏令时变化的日期和时间。

这对解析和重新显示日期信息非常有帮助,同时您可以指定条规则,让您的用户不要在他们的输入中指定夏令时设置。

为了避免这些问题,您可以将用户输入的时间值转换为格林尼治时间,目前,在.NET中并没有提供方法通过解析用户输入的字符串来展示用户的时间视角,并正确分配正确的格林尼治时间。这是因为使用夏令时的人居住地所处的时区并不是格林尼治标准时间。

在时间不明确的情况下,您可以使用TimeZone对象来确定时间是否处于夏令时状态,以下方法提供了这一功能:

Timezone.CurrentTimeZone.IsDaylightSavingTime(DateTimeObject)

或者您可以使用DateTime 对象的IsDaylightSavingTime属性,如下所示:

DateTimeInstance.IsDaylightSavingTime

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章