我希望能够将这个问题及其答案作为处理夏令时的权威指南,特别是处理实际的变更问题.
如果您有任何要添加的内容,请执行此操作
许多系统依赖于保持准确的时间,问题在于由于夏令时改变时间 - 向前或向后移动时钟.
例如,在订单获取系统中有一个业务规则取决于订单的时间 - 如果时钟发生变化,规则可能不那么明确.如何保持订单的时间?当然有无数的场景 - 这只是一个说明性的场景.
同样重要的是,如果不是这样的话:
我会对编程,操作系统,数据持久性和该问题的其他相关方面感兴趣.
一般答案很好,但我也希望看到细节,特别是如果它们只在一个平台上可用.
我将所有DateTime字段存储为UTC时间.当用户请求网页时,我想采用他首选的本地时区(而不是服务器计算机的本地时区)并自动将所有Web表单中的所有DateTime字段显示为本地日期.
当然,我可以在每个表单中的每个DateTime.ToString()调用上应用转换,或者实现一些帮助程序实用程序但是这是一个耗时的任务,并且还有一些第三方组件使用自定义DateTime显示模板进行配置很棘手.
基本上,我想使DateTime类的行为如下:
from this moment on for this web request,
whenever some code calls DateTime.ToString(), convert it to the local time
using the timezone offset given at the very beginning of the web request,
but if possible, please keep .NET core library DateTime.ToString() calls intact
(I don't want to mess up event logging timestamps etc.)
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
顺便说一下,我使用的是ASP.NET MVC 4,如果重要的话.
将UTC日期时间转换为本地时间(CET)的正确方法是什么?我应该使用System.DateTime.ToLocalTime()还是TimeZoneInfo.ConvertTime()?有什么区别吗?还是它们只是内部互相调用的两个方法?