2010-10-12 7 views
2

Je suis en train de faire la différence entre 2 dates en jours, heures et secondes:temps Groovy durées

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 
} 

: Ce imprime

-690023 jours, -14 heures, - 38 minutes, -27,182 secondes

Ce qui est évidemment rien comme la différence entre la date d'aujourd'hui et le 01/01/1, où je vais mal?

Merci, Don

Répondre

4

pourrait être un problème avec le constructeur dépréciée?

Si vous utilisez le calendrier (and the Groovy updated method) pour créer le newYearsDay2000 var, vous obtenez:

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 
} 

qui donne le résultat:

3925 days, 23 hours, 59 minutes, 59.999 seconds 

Modifier

Oui , le JavaDoc for Date montre que constructeur avec le commentaire:

Date (année int, int mois, la date int)

Obsolète. À partir de JDK version 1.1, remplacé par Calendar.set (année + 1900, mois, date) ou GregorianCalendar (année + 1900, mois, date).

Ce qui me porte à croire que:

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

crée actuellement la date de jour de l'An dans l'année

+0

Très bien taché, prends un arc! –

1

Date Paramètres: année - l'année moins 1900