更改我的应用程序的时区以进行测试

时间:2016-02-09 11:40:12

标签: c# .net timezone

我正在研究一个项目,该项目有很多时间根据这些时间表安排和执行任务。

我只是想知道当他们在我的电脑上运行时,是否有更简单的方法在我的服务器的不同时区测试我的应用程序。

我不想更改区域设置中的时区,而是更改某个应用程序的上下文。

数据库将所有内容存储为UTC,但应用程序会在本地时间向用户显示此内容。但是我在UTC时区对我来说是一样的。

1 个答案:

答案 0 :(得分:6)

有几件事:

  • 服务器端应用程序永远不应该依赖于本地计算机的时区。这意味着您永远不应该使用DateTime.NowTimeZoneInfo.LocalDateTime.ToLocalTimeDateTime.ToUniversalTime或使用机器本地时区的任何其他方法或属性。如果您在时区不同时发现应用程序行为发生了变化,那么您的应用程序代码不正确,应该修复。

  • 正确安排不能仅仅根据UTC进行。您需要考虑正在安排的事件的时区(而不是机器的时区)。 (More on this here)这最好在应用程序层中完成,因此您可以为代码中的不同时区创建单元测试。您无需通过更改机器的时区或其他主时区设置进行测试。

    例如,考虑我是否在美国太平洋时间每天上午10:00举行会议。我不能按UTC计划这一点,因为等效的UTC时间将在18:00到17:00之间波动,具体取决于夏令时是否在会议特定事件的太平洋时区生效。同样,我不能使用服务器的时区,因为它可能是UTC,或者它可能设置为澳大利亚,欧洲,南美或任何其他时区和夏令时规则完全不同的地方。该事件在太平洋时间,时钟以UTC为单位,两个之间的转换必须在应用层完成,并且事件必须在太平洋时间安排。