2013-05-08 37 views
5

我有一個問題,根據我輸入日期的時間,圖書館發生更改後,由epoch返回的天數由Joda-Time返回。如果我輸入2012-05-14 22:00:002012-05-14 02:00:00我希望得到相同的結果,因爲它們都在同一天。以下是我的代碼。Joda-Time自紀元以來的天數

 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 

沒有人有任何知道我做錯了嗎?

+0

結果取決於你的時區。請記住,時代的開始時間是01-01-1970,00:00:00 ** GMT **。根據您的時區,2012-05-14 22:00和2012-05-14 02:00可能在轉換爲GMT時的不同日期。 – Jesper 2013-05-08 09:16:26

回答

3

OK找到了問題(這是在我自己的眼前:))...我得到的時代確實從1970-01-01開始,但不是從當天的第一個ms開始。

我需要添加以下行得到它排序:

epoch.setTime(0); 
+0

只是一個筆記...對於一般情況下,想忽略時間只關注日期,請調用[withTimeAtStartOfDay()](http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime .html#withTimeAtStartOfDay())方法[DateTime](http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html)。不確定這是否適用於這個問題;我沒有測試。 – 2013-11-04 07:22:13

相關問題