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

Cat*_*lMF 1 .net c# timezone

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

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

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

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

Mat*_*int 7

有几件事:

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

  • 正确的调度不能仅仅根据UTC进行.您需要考虑正在安排的事件的时区(而不是机器的时区).(有关此内容的更多信息)最好在应用程序层中完成此操作,因此您可以在代码中为不同的时区创建单元测试.您不能通过更改机器的时区或其他主时区设置进行测试.

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