2013-05-08 11 views
5

Ich habe ein Problem, wobei die Anzahl der Tage seit epoch von Joda-Time Bibliothek zurückgegeben ändert sich abhängig von der Zeit des Datums, das ich eingegeben habe. Wenn ich 2012-05-14 22:00:00 und 2012-05-14 02:00:00 gebe, würde ich das gleiche Ergebnis erwarten, da sie beide am selben Tag sind. Das Folgende ist mein Code.Joda-Time Anzahl der Tage seit der Epoche

 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 

Hat jemand eine Ahnung, was mache ich falsch?

+0

Die Ergebnisse auf Ihre Zeitzone ab. Denken Sie daran, dass der Beginn der Epoche am 01-01-1970, 00:00:00 ** GMT ** ist. Abhängig von Ihrer Zeitzone können sich 2012-05-14 22:00 und 2012-05-14 02:00 an verschiedenen Tagen befinden, wenn Sie in GMT konvertiert werden. – Jesper

Antwort

3

OK gefunden das Problem (was vor meinen eigenen Augen war :)) ... die Epoche, die ich bekam, begann in der Tat ab dem 01.01.1970, aber nicht ab den allerersten MS des Tages.

Ich brauchte die folgende Zeile hinzufügen, um es sortiert zu bekommen:

epoch.setTime(0); 
+0

Nur eine Anmerkung ... Für den allgemeinen Fall, dass Sie die Zeit ignorieren möchten, um sich nur auf das Datum zu konzentrieren, rufen Sie die [withTimeAtStartOfDay()] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime) auf .html # withTimeAtStartOfDay()) Methode für [DateTime] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html). Nicht sicher, ob dies für dieses Problem gilt; Ich habe nicht getestet. –

Verwandte Themen