2013-05-08 18 views
5

Ho un problema per cui il numero di giorni dal epoch restituito dalla libreria Joda-Time varia in base all'ora della data che ho inserito. Se inserisco 2012-05-14 22:00:00 e 2012-05-14 02:00:00 mi aspetterei lo stesso risultato poiché sono entrambi nello stesso giorno. Quello che segue è il mio codice.Numero giorni Joda da Epoca

 try { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     Date date1 = sdf.parse("2013-05-03 07:00:00"); 
     Date date2 = sdf.parse("2013-05-03 23:30:00"); 


     MutableDateTime epoch = new MutableDateTime(); 
     epoch.setDate(0); //Set to Epoch time 
     System.out.println("Epoch: " + epoch); 
     Days days1 = Days.daysBetween(epoch, new MutableDateTime(date1.getTime())); 
     Days days2 = Days.daysBetween(epoch, new MutableDateTime(date2.getTime())); 
     System.out.println("1) Days Since Epoch: " + days1.getDays()); 
     System.out.println("2) Days Since Epoch: " + days2.getDays()); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

Epoch: 1970-01-01T11:09:00.414+01:00 
1) Days Since Epoch: 15827 
2) Days Since Epoch: 15828 

Qualcuno ha qualche idea di cosa sto facendo male?

+0

I risultati dipendono dal fuso orario. Ricorda che l'inizio dell'epoca è il 01-01-1970, 00:00:00 ** GMT **. A seconda del fuso orario, 2012-05-14 22:00 e 2012-05-14 02:00 potrebbero essere in giorni diversi quando convertiti in GMT. – Jesper

risposta

3

OK ha trovato il problema (che era di fronte ai miei occhi :)) ... l'epoca che stavo ottenendo era effettivamente a partire dal 1970-01-01 ma non dal primo ms di quel giorno.

avevo bisogno di aggiungere la seguente riga per farlo ordinati:

epoch.setTime(0); 
+0

Solo una nota ... Per il caso generale di voler ignorare il tempo di concentrarsi solo sulla data, chiamare il [withTimeAtStartOfDay()] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime .html # withTimeAtStartOfDay()) metodo su [DateTime] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html). Non sono sicuro se questo si applica a questo problema; Non ho provato –

Problemi correlati