首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时差论日照节约

时差论日照节约
EN

Stack Overflow用户
提问于 2013-12-12 20:59:22
回答 2查看 1.2K关注 0票数 1

我有两个longs代表自那个时代以来的时间。他们都有相同的时区。我想找出这两次之间的差,以秒为单位,尊重日照节约。

代码语言:javascript
复制
(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

代码语言:javascript
复制
(.getStandardSeconds (.toDuration (Interval. a b)))

但是,这是不起作用的,因为Period的文档表明Duration会破坏Day的储蓄:

当这个时间段被添加到瞬间时,效果是依次添加每个字段。因此,这将考虑到夏时制。在夏令开始前一天增加1天的时间只会增加23小时,而不是24小时,以确保时间保持不变。如果这不是您想要的行为,那么请查看持续时间。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-12 21:12:30

Java中的long代表一个特定的时间点(从1.1.1970的午夜开始,忽略了闰秒)。它们不带时区,也不使用夏令时,它总是以UTC表示。若要找出两个这样的时点之间的秒差,可以使用

代码语言:javascript
复制
(secondTime - firstTime) / 1000

你给出的两次是用格林尼治标准时间表示的,即

代码语言:javascript
复制
1259568796000 = 2009-11-30T08:13:16.000-00:00 GMT
1255147200000 = 2009-10-10T04:00:00.000-00:00 GMT

格林尼治时间也没有转向夏令时。也许你被这个弄糊涂了。

票数 3
EN

Stack Overflow用户

发布于 2013-12-12 21:12:16

java.util.Calendar类支持夏时制。也许你的约会先过一遍?它应该能为你恢复正常。看看这个其他员额

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20554125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档