gpt4 book ai didi

date - 是否可以根据代表本地午夜的 UTC 时间计算本地日期?

转载 作者:行者123 更新时间:2023-12-02 08:16:39 25 4
gpt4 key购买 nike

假设您在给定时区(例如 America/New_York)中采用本地日期(例如 2016-12-28),并将该日期的开始时间转换为 UTC(在本例中为 2016-12-28T05:00:00Z ).

是否有可能从那个 UTC 时间返回到原始本地日期不知道时区?您所知道的是,UTC 时间代表一些本地午夜/一天的开始。

我想这在某些情况下是可能的,例如当偏移量很小时,但我不确定当时区接近日期线时不会有两个可能的答案,即当两个时区具有相同的时间但不同的日期/偏移量(-10和 +14)。

(这个问题最初是在一个数据库中遇到的,其中本地日期被错误地存储为UTC,并且原始时区数据很难再次检索。)

最佳答案

在某些约束条件下,可以识别时区偏移量 (UTC-05:00),但不能识别原始时区 (America/New_York)。正如霍华德在他的回答中所显示的那样,您只能列出当时偏移量可能属于的可能时区。还有其他边缘情况使这个问题变得困难:

  • 您提供了一个非常清楚的案例,说明人们如何无法确定靠近国际日期变更线的偏移日期。

    • 例如,考虑 2016-12-31T10:00:00Z。这可能是 2016-12-31T00:00:00-10:00(可能是 Pacific/Honolulu),也可能是 2017-01-01T00: 00:00+14:00(可能是Pacific/Tongatapu)。

    • -10/+14-11/+13 配对都是可能的,但地球上没有任何有人居住的地方实际使用 -12 。因此,如果您的值刚好在中午,它们可能是 +12,除非您处理的是海上的船只。

  • 本地午夜值可能不存在您期望的时区。

    • 例如,2016-10-16T03:00:00ZAmerica/Sao_PauloAmerica/Bahia 一天的开始>(均在巴西)。但是,America/Sao_Paulo 的本地时间是 01:00,而不是 00:00。由于他们的 DST Spring 过渡,那天没有午夜。
  • 本地午夜值可能在您期望的时区出现两次

    • 例如,在 America/Havana 中,2016-11-06T04:00:00Z2016-11-06T05:00:00Z code> 的本地时间为 00:00,因为它们采用 DST 回退转换。

因此,在一般情况下,您可以将其中的大部分 解析回它们的原始偏移量,但是对于 -10 的时区,您会有歧义、-11+13+14 偏移量,以及在午夜( Spring )或 1 进行 DST 转换的时区: 00 AM(秋季)。 (请记住,北半球/南半球的 Spring /秋季是不同的。)

关于date - 是否可以根据代表本地午夜的 UTC 时间计算本地日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365860/

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