2010-10-12 130 views
2

我試圖讓以天,小時2個日期之間的差異,以及秒: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之間的區別,我在哪裏出錯?

謝謝, 唐

回答

4

可能是與過時的構造函數的問題?

如果您使用日曆(and the Groovy updated method)創建newYearsDay2000變種,您可以:

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年,月整型,詮釋日期)

已過時。從JDK版本1.1開始,由Calendar.set(年份+ 1900,月份,日期)或GregorianCalendar(年份+ 1900,月份,日期)取代。

這使我相信:

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

是actualy在今年創造了元旦的日期

+0

非常好看,拿弓! – 2010-10-12 13:30:28