这里是一个棘手的情况。我们的应用程序在设置了特定时区(例如亚洲时间)的系统中运行。但是,客户要求使用欧洲时区运行他的应用程序。

由于我们的数据未存储在UTC中,因此我们是否仍可以在应用程序中设置区域设置,以便所有显示的日期都将使用Europe TimeZone?我知道我们可以在Web.Config上设置区域性信息,但是我不确定这是否也可以帮助设置TimeZone。

顺便说一句,我们的应用程序正在使用C#WebForm和MSSQL 2008 R2运行。

最佳答案

数据的存储方式与选择显示方式完全不同。假设日期和时间表示固定的时间点(而不是浮动的“本地”时间),我将尝试使用UTC中的DateTime值编写尽可能多的应用程序。检索数据时,如果需要(尚未说明数据存储在哪个时区),请从“存储时区”进行转换,并在存储时将其转换回去。显示时,请在需要的任何时区显示。

就.NET而言,您不需要在全局级别上进行设置-您可以具有应用程序范围的配置设置(如果您确实愿意)和“帮助程序”代码,可以在需要显示时进行转换。不过,我会非常明确地这样做:您真的不希望在涉及时间的事情上隐式发生转换。

(我还提到过,我的Noda Time库作为日期和时间的更清晰的API可能很有用。当然,我有偏见。我还建议您迁移到UTC中存储所有内容...当然只有在适当的时候。)

10-06 04:36
查看更多