理解这种日期格式 - Redtail

Understanding this date format - Redtail

这是什么日期格式:-147114000000-0700。应该是 05/04/1965.

第一项看起来像 unix 时间戳。但是,为什么我们需要第二个任期?

我正在使用 Redtail's api,但他们提供的相关文档微不足道。他们发送的日期看起来像 "/Date(-147114000000-0700)/"。我以前从未见过这种格式。忽略所有无用的文本,我们得到 -147114000000-0700,仍然让我感到困惑。

-147114000000 值是以毫秒为单位的 unix 时间戳:它表示自 unix 纪元(即 1970-01-01T00:00Z1 月 1 日 st 以来的毫秒数 1970 年午夜 UTC).

由于数字-147114000000是负数,它代表早于的纪元。在这种情况下,1965-05-04T07:00:00Z(或 1965 年 5 月 4 日 早上 7 点(UTC)。

-0700是一个UTC offset:代表与UTC的差异。在这种情况下,比 UTC 晚 7 小时,这导致 1965-05-04T00:00-07:00(或 May 4th 1965 年午夜 -07:00 offset). 请注意,偏移量可以写为 -07:00-0700-07

但请记住,同一个值在每个时区可以代表不同的日期和时间。例如,在Pacific/Honolulu timezone (that uses the -10:00 offset since 1947)中,相同的时间戳对应于1965-05-03T21:00-10:00(May 3rd 1965 at 9 PM,在offset -10:00)。因此相应的日期和时间将取决于您将其转换为哪个时区。

也就是说,可能有偏移量的目的只是告诉你 date/time 指的是什么偏移量,所以它可以防止你转换到不同的偏移量(在那里你可以得到不同的本地日期和时间的值)。


提醒一下 -0700 不是时区,它只是一个偏移量。实际上,时区是 一个区域在其历史期间拥有、拥有和将拥有的所有偏移量的集合,而偏移量只是 与 UTC[=61] 的差异=](查看 timezone tag description). There can be more than one timezone that uses the same offset 中的 TimeZone != Offset 部分,因此您不能真正说明这是在哪个时区。