时区规则的变化

时间:2018-03-08 18:30:51

标签: c# .net globalization

佛罗里达州批准了Sunshine Protection Act消除佛罗里达州的DST。

我需要对.NET代码进行哪些更改,以便在将UTC DateTime转换为佛罗里达当地时间时不会得到错误的答案?

2 个答案:

答案 0 :(得分:3)

您无需进行任何代码更改。

.Net从Windows获取其时区信息。只需更新Windows。微软将在法律生效前发布更新。

更新将列在here (归功于@HansPassant)

Here is an example of such an update from 2016

答案 1 :(得分:0)

我有3条关于DateTimes的基本规则:

  1. 始终存储,传输和检索UTC。时区?这是.NET在输出期间可以处理的事情。之后它询问Windows应该将时区和文化格式应用于该UTC值。您没有处理时区,因为that way lies madness
  2. 避免存储,传输和撤回字符串。尽可能长时间使用DateTime类型。
  3. 如果您无法填写规则2(XML或其他Serialstion),请至少在所有端点选择一个固定的文化和字符串编码。您不希望在问题中添加这些令人头疼的问题。
  4. 在您的情况下,如果您遵循规则1并且这不是服务器应用程序,只需等待Windows更新它的Timezone / UST列表即可。这是一个UI工作,.NET与负责此类工作的Windows系统有很好的连接。

    如果这是一个服务器应用程序,每个用户都可以选择自己的时区。这里可能会有一个小小的变化。这真的取决于你如何进行国际化。