gpt4 book ai didi

c# - TimeZoneInfo 过去几年的时间转换

转载 作者:行者123 更新时间:2023-11-30 20:43:58 25 4
gpt4 key购买 nike

TimeZoneInfo.ConvertTimeFromUtc方法从注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zone读取夏令时设置来计算本地时间?

如果是这样,它是否只适用于当前时间而不适用于过去的任何年份或日期?我想知道我是否可以将“东部标准时间”(如“2-1-2010 3:00 PM”)中的过去日期时间转换为 GMT 或 UTC遵循 2010 年的 DLS(夏令时)?以另一年为例,例如“2-1-2006 3:00 PM”。当你阅读 here ,美国的 DST 在 2007 年发生了变化。

请问,如果我必须在过去 5 年中显示来自马来西亚和纽约(美国东部标准时间)等两个不同地方的 SQL 数据库的约会时间,最佳解决方案是什么?

最佳答案

Does the TimeZoneInfo.ConvertTimeFromUtc method read the daylight saving settings from the registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zone to calculate the local time?

是的,除了最后一个键名是 Time Zones(你删除了一个 s)。您可以在 this MSDN blog article 中了解其工作原理。 .

If so, does it work for only the current time and not for any past years or dates?

它将适用于 Windows 注册表数据中存在的任何过去年份。您可以检查注册表中的每个子项,看看您可以为每个区域转换多远。但是,数据中存在各种错误和遗漏。一般来说,此数据的历史准确性不如其他来源(例如 IANA/Olson 时区数据库,您可以通过 Noda Time 使用)。 .在 the timezone tag wiki 中阅读更多内容.

I would like to know if I can convert a past date time in 'Eastern Standard Time' like '2-1-2010 3:00 PM' to GMT or UTC which follows the DLS (Day Light Saving) for the year 2010? Take another year like '2-1-2006 3:00 PM' as an example also. As you read here, the DST has changed in 2007 for the US.

  • 术语是“夏令时”- 没有大写字母,一个单词表示夏令时,缩写为 DST

  • 是的,Windows 时区数据和 TimeZoneInfo 将 DST 考虑在内。

  • 要将 转换为 UTC,您可以使用 ConvertTimeToUtc,而不是 ConvertTimeFromUtc

  • 是的,Windows 知道美国 2007 年夏令时的变化。它确实但是,了解earlier changes ,例如 Uniform Time Act 之前的值于 1987 年生效。为此,您需要 IANA/Olson 数据库。

May I ask, what is the best solution if I have to display an appointment time from a SQL database in two different locals like Malaysia and New York (USA Eastern Standard Time) for a visitor in the past 5 years?

  • 使用 TimeZoneInfo 为纽约使用 ID “东部标准时间” ID,为纽约使用 “新加坡标准时间” ID马来西亚。

  • Noda Time 中使用 IANA/Olson 时区,使用 "America/New_York""Asia/Kuala_Lumpur"

  • 对于您询问的过去 5 年,这两个选项都可以。 Malaysia's last time zone change was in 1982 .

  • 对于过去的事件,将 UTC 时间存储在您的数据库中,或存储具有正确时间和事件时区偏移量的 DateTimeOffset 值(参见 DateTime vs DateTimeOffset )。根据显示需要从 UTC 转换为查看者的时区。

  • 为了安排 future 的事件,将事件的本地时间存储在您的数据库中,并遵循 the guidance I've written here .

您还可以在我的 Pluralsight 类(class) Date and Time Fundamentals 中找到有关此主题的扩展指导。 .具体来说,您应该考虑观看标题为“时区”、“.NET Framework 中的日期和时间”和“Noda Time 简介”的部分。

关于c# - TimeZoneInfo 过去几年的时间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29979609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com