使用 tz 数据库(更多信息: https://data.iana.org/time-zones/tz-link.html和https://en.wikipedia.org/wiki/Tz_database )。我经常需要将时间戳从一个时区转换到另一个时区,但不能简单地应用偏移量,但是必须查找偏移量来转换时间戳是很耗时的。此外,由于某些位置有夏令时而其他地方没有,因此需要额外的工作,并且夏令时的开始/结束日期是特定于位置的。
这个函数可能是这样的:
ConvertTimeZone( ts, tzFrom, tzTo ) //ts is the time stamp will be converted from tzFrom to tzTo
//example
ConvertTimeZone( 05May2022:19:31:07, "UTC", "America/Los_Angeles" ) //result: 05May2022:12:31:07
理想情况下,所有日期时间值都将更改为包含时区,并设置为默认的 UTC(如果未指定)。
每个时区应使用 TZ 数据库名称 ( https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ),就像在其他编程语言中使用的一样(例如:Python)。
这是一个关于这个问题的问题: https://community.jmp.com/t5/Discussions/Time-zone-conversion/mp/331514#M58032
有关时区问题的非常幽默的描述,请观看此视频: https://www.youtube.com/watch?v=-5wpm-gesOY&t=3s . 它长达 10 分钟,但非常值得*时间*(请原谅双关语)。
不错的视频参考,谢谢。
ESP32 时钟中的 JSL BLOB讨论了一些时区问题。 制作后我也简要了解了国际日期变更线这个视频底部边缘有两个日期名称。
与时间一起工作真的很难。