我有两个longs代表自那个时代以来的时间。他们都有相同的时区。我想找出这两次之间的差,以秒为单位,尊重日照节约。
(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会破坏Day的储蓄:
当这个时间段被添加到瞬间时,效果是依次添加每个字段。因此,这将考虑到夏时制。在夏令开始前一天增加1天的时间只会增加23小时,而不是24小时,以确保时间保持不变。如果这不是您想要的行为,那么请查看持续时间。
我怎样才能完成这个任务?
发布于 2013-12-12 21:12:30
Java中的long代表一个特定的时间点(从1.1.1970的午夜开始,忽略了闰秒)。它们不带时区,也不使用夏令时,它总是以UTC表示。若要找出两个这样的时点之间的秒差,可以使用
(secondTime - firstTime) / 1000你给出的两次是用格林尼治标准时间表示的,即
1259568796000 = 2009-11-30T08:13:16.000-00:00 GMT
1255147200000 = 2009-10-10T04:00:00.000-00:00 GMT格林尼治时间也没有转向夏令时。也许你被这个弄糊涂了。
发布于 2013-12-12 21:12:16
java.util.Calendar类支持夏时制。也许你的约会先过一遍?它应该能为你恢复正常。看看这个其他员额。
https://stackoverflow.com/questions/20554125
复制相似问题