Groovy持续时间

时间:2010-10-12 08:25:22

标签: datetime groovy

我正在尝试以天,小时和秒来区分两个日期:

import groovy.time.*

Date now = new Date()

// Using deprecated constructor just for this example
Date newYearsDay2000 = new Date(2000, 0, 1)

use (TimeCategory) {
    now - newYearsDay2000
}

打印:

  

-690023天,-14小时,-38分钟,-27.182秒

这显然不像今天的日期和2000/1/1之间的区别,我哪里错了?

谢谢, 唐

2 个答案:

答案 0 :(得分:4)

可能是弃用的构造函数的问题?

如果您使用日历(and the Groovy updated method)创建newYearsDay2000 var,则会获得:

import groovy.time.*
import static java.util.Calendar.*

Date now = new Date()
// Use the static imported Calendar class
Date newYearsDay2000 = instance.updated( year:2000, month:JANUARY, day:1 ).time

use( TimeCategory ) {
    now - newYearsDay2000
}

给出了结果:

3925 days, 23 hours, 59 minutes, 59.999 seconds

修改

是的,JavaDoc for Date显示带有注释的构造函数:

  

日期(int year,int month,int date)

     

已过时。从JDK 1.1版开始,由Calendar.set(年份+ 1900,月份,日期)或GregorianCalendar(年份+ 1900,月份,日期)取代。

这让我相信:

Date newYearsDay2000 = new Date(2000, 0, 1)

实际创建年度 3900

的新年日期

答案 1 :(得分:1)

Date 参数:     年 - 减去1900年。