【发布时间】:2021-11-12 08:44:40
【问题描述】:
在 .Net 中有一个 TimeZoneInfo 类可以将 DateTimes 从一个 TZ 转换为另一个 TZ,并且考虑到夏令时。
我猜,在内部,.Net 只是硬编码了有关夏令时开始和结束时间的所有数据。
我的问题是 - 如果我有一个应用程序使用 TimeZoneInfo 在 TZ 和某个国家/地区之间进行转换,那么它是夏令时设置(或“政策”或任何人类所称的),这是反映这种变化的唯一方法应用程序是手动设置该国家/地区的检查或应用一些 .Net 更新?
此外,由于夏令时是按国家/地区划分的,并且 TimeZoneInfo 与时区一起使用,我如何告诉它转换时间以考虑特定国家/地区?我只能看到一个使用时区 ID 的构造函数。
【问题讨论】:
-
夏令时不是“每个国家”。它还可能取决于您在一个国家/地区的位置,而不仅仅是该国家/地区。一个国家可以有多个时区! “我只能看到一个使用时区 ID 的构造函数。”这还不够吗?
-
@Sweeper,很大程度上是“每个国家”,因为决定他们是否拥有 DS 的是国家,而不是时区。所以,不,这还不够。也许我需要澄清一下 - 每个时区也可能有(令人震惊的)许多国家。
-
在美国,它是每个州的。例如,在亚利桑那州,虽然该州不使用 DST,但该州的美洲原住民保留区却使用。
-
澳大利亚是另一个例子。一些州遵守夏令时,其他州则不遵守。不过,我不能告诉你哪些可以,哪些不可以。