这是groovy / java中一个奇怪的日期计算错误吗?

时间:2013-03-18 07:47:32

标签: date groovy

我正在尝试计算两对特定日期之间的天数,但断言在第二次测试时失败,距离第一次测试只有一周。

代码如下。

我的代码中是否有错误?或者这是一个奇怪的java / groovy错误?

use(groovy.time.TimeCategory) {
    def duration = Date.parse("yyyy-MM-dd", "2013-03-10") - Date.parse("yyyy-MM-dd", "2012-12-30")
    assert duration.days == 70

    def duration2 = Date.parse("yyyy-MM-dd", "2013-03-17") - Date.parse("yyyy-MM-dd", "2012-12-30")
    assert duration2.days == 77
}

1 个答案:

答案 0 :(得分:0)

@Damien_The_Unbeliever做对了。由于EST正在使用,大约在3月份,它将提前1小时转为EDT(因此将2013-03-17美国东部时间转换为EST将意味着它将损失1小时。)

我已经改变了测试以确认这是真的。第二个和第三个断言通过。

use(groovy.time.TimeCategory) {
    def duration = Date.parse("yyyy-MM-dd", "2013-03-10") - Date.parse("yyyy-MM-dd", "2012-12-30")
    assert duration.days == 70

    def duration2 = Date.parse("yyyy-MM-dd", "2013-03-17") - Date.parse("yyyy-MM-dd", "2012-12-30")
    assert duration2.days == 76
    assert duration2.hours == 23
}