2013-05-08 15 views
5

Tôi gặp sự cố trong đó số ngày kể từ ngày epoch được trả lại bởi Joda-Time thay đổi thư viện tùy thuộc vào thời gian tôi đã nhập. Nếu tôi nhập 2012-05-14 22:00:002012-05-14 02:00:00 Tôi mong đợi kết quả giống nhau vì cả hai đều trong cùng một ngày. Sau đây là mã của tôi.Số ngày Joda kể từ ngày Epoch

 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 

Có ai có bất kỳ ý tưởng những gì tôi đang làm sai?

+0

Kết quả phụ thuộc vào múi giờ của bạn. Hãy nhớ rằng sự khởi đầu của kỷ nguyên là vào ngày 01-01-1970, 00:00:00 ** GMT **. Tùy thuộc vào múi giờ của bạn, 2012-05-14 22:00 và 2012-05-14 02:00 có thể vào các ngày khác nhau khi được chuyển đổi sang GMT. – Jesper

Trả lời

3

OK tìm thấy vấn đề (trước mắt tôi :)) ... kỷ nguyên tôi nhận được thực sự bắt đầu từ 1970-01-01 nhưng không phải từ những ngày đầu tiên của ngày hôm đó.

tôi cần phải thêm dòng sau đây để có được nó sắp xếp:

epoch.setTime(0); 
+0

Chỉ cần lưu ý… Đối với trường hợp chung muốn bỏ qua thời gian để chỉ tập trung vào ngày tháng, hãy gọi [withTimeAtStartOfDay()] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime Phương thức .html # withTimeAtStartOfDay()) trên [DateTime] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html). Không chắc chắn nếu điều này áp dụng cho vấn đề này; Tôi đã không kiểm tra. –