gpt4 book ai didi

java - 关于夏令时的时差

转载 作者:行者123 更新时间:2023-11-29 05:32:47 26 4
gpt4 key购买 nike

我有两个 long 代表自纪元以来的时间。他们都有相同的时区。我想找出这两个时间之间以秒为单位的差异,尊重夏令时。

(def a (java.util.Date. 1259568796000))  ;; Before Day Light Savings

(def b (java.util.Date. 1255147200000)) ;; After Day Light Savings

其中“a”是 2009-11-30T08:13:16.000-00:00

其中“b”是 2009-10-10T04:00:00.000-00:00

使用 JodaTime,我可以从这两个时间中生成一个Interval,将它们变成一个Duration,然后得到StandardSeconds

(.getStandardSeconds (.toDuration (Interval. a b)))

但这不起作用,因为 Period 的文档表明 Duration 会打乱夏令时:

When this time period is added to an instant, the effect is of adding each field in turn. As a result, this takes into account daylight savings time. Adding a time period of 1 day to the day before daylight savings starts will only add 23 hours rather than 24 to ensure that the time remains the same. If this is not the behaviour you want, then see Duration.

我怎样才能完成这个任务?

最佳答案

Java 中的 long 表示某个时间点(从 1.1.1970 午夜开始的毫秒数,忽略闰秒)。它们不带时区,不与夏令时切换,始终以 UTC 表示。要找到两个这样的时间点之间的秒数差异,您可以使用

(secondTime - firstTime) / 1000

你给出的两个时间是用GMT表示的,即

1259568796000 = 2009-11-30T08:13:16.000-00:00 GMT
1255147200000 = 2009-10-10T04:00:00.000-00:00 GMT

而且 GMT 也不会切换到夏令时。也许您对此感到困惑。

关于java - 关于夏令时的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20554125/

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