2012-03-07 13 views
13

var mı bir yolu isBefore fonksiyonu ile DateTime nesne için karşılaştırıldığında sadece tarih var mı? Eks. Tarih Java Joda Time "isBefore" kullanan tek karşılaştırma

, Şimdi yaptığımda

DateTime start = new DateTime(Long.parseLong(<someInput>)); 
DateTime end = new DateTime(Long.parseLong(<someInput>)); 

,

o ne istiyorum oysa yanı göz zamanda içine alıyor gibi bu (benim senaryo için) tutarsız davranışları ile sonuçlanır
while (start.isBefore(end)) { 
    // add start date to the list 
    start = start.plusDays(1); 
} 

isBefore kullanılarak karşılaştırılan tarihlere sahip olmaktır. Bunu yapabileceğimin bir yolu var mı?

Lütfen bana bildirin.

Teşekkürler!

cevap

21

Yalnızca tarihleri ​​karşılaştırmak isterseniz,yerine LocalDate sınıfını kullanmak isteyebilirsiniz.

JodaTime docs

oldukça iyi: http://joda-time.sourceforge.net/apidocs/org/joda/time/LocalDate.html

+0

Cevabınız için teşekkür ederiz. DateTime'ı LocalDate'e dönüştürmek ve sonra LocalDate'i DateTime'a dönüştürmek yerine, DateTime'ı döngü içinde saklamak istedim, bence DateFormatter'ı kullanmak daha iyi bir fikir. – test123

+1

Gün ışığından yararlanma saatine girerken/çıkarken garip davranışlarınız olmadığından emin olunuz! Tarihler ve zamanlar ilk göründüklerinden daha sıkıcıdır ... –

+1

Uygulamam için kullanım durumlarını yeniden değerlendirdim ve LocalDate kullanarak daha iyi olacağımı düşünüyorum. Teşekkürler! – test123

1

DateTime yerine LocalDate kullanmaya geçin. JodaTime'daki konsept “kısmi” dir (ReadablePartial arayüzüne bakınız).

+0

Cevabınız için teşekkür ederiz. DateTime formatını sadece döngü içinde saklamak istedim. Bu yüzden George'un aşağıda önerdiği şeylere bağlı kalacağımı düşünüyorum. Teşekkürler! – test123

0

Sen DateTime sıfır (gece yarısı anlamına gelir) için ayrıştırma sonra zamanını ayarlayabilirsiniz:

// withTime sets hours, minutes, seconds, milliseconds 
DateTime start = new DateTime(Long.parseLong(<someInput>)).withTime(0, 0, 0, 0); 
DateTime end = new DateTime(Long.parseLong(<someInput>)).withTime(0, 0, 0, 0); 

Veya diğer Joda Zaman sınıfların birini kullanın ; DateTime'dan daha fazlası var! Yalnızca tarihlerle uğraşıyorsanız, muhtemelen DateTime yerine LocalDate'u kullanmak isteyeceksiniz.

+0

Cevabınız için teşekkürler! Başvuruma daha yakından baktıktan sonra, onu DateTime yerine LocalDate olarak değiştireceğimi düşünüyorum. Teşekkürler! – test123

+2

Saat dilimini gece yarısı dahil olmak üzere gün ışığından yararlanma farkları varsa, gece yarısına ayarlanması çalışmaz. DayOfMonth() çağrısı roundFloorCopy() ', kenardaki durumu işler. – JodaStephen

8

Başka bir strateji biçimlendirmektir. Yanıt (

)
+0

Bu en çok istediğim şeye yakın. Öneri için çok teşekkürler! – test123

+0

df.parse, DateTime kabul etmez :-( – test123

+0

df.parse (start.toString()) öğesini deneyin; – JCab

İlgili konular