2014-09-24 20 views

cevap

20

Küçük bir uyarı. Henüz bu test etmedim ama WeekFields ve LocalDate.get API belgelerine bakarak, sen böyle bir şey yapmak gerekir:

LocalDate date = ...; 
// Or use a specific locale, or configure your own rules 
WeekFields weekFields = WeekFields.of(Locale.getDefault()); 
int weekNumber = date.get(weekFields.weekOfWeekBasedYear()); 
+4

Locale.getDefault() hakkında dikkatli olun. Bazı yerlerde (ör. Kanada) Pazar günü başlayan bir hafta geri dönebilir. Pazartesi günü başlayan haftalarda "Locale.ISO" kullanın. –

+1

Locale.ISO yok, ancak 'WeekFields.ISO' –

24

Mark Rotteveel cevabı neredeyse sağ ve yine bir örnektir orada karışıklık potansiyeli hangi tür WeekFields sınıfındadır (benzer ses metot isimleri, ancak sezgisel sivil kullanımdan sapma). Doğru kod başka bir alan gerektirir:

LocalDate date = LocalDate.now(); 
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear(); 
int weekNumber = date.get(woy); 

@kleopatra ait yanıttan, bu SO-post da özellikle tartışma ve yorum benzer bir tartışma bakın.

+0

var. Cevabınızı sizinkilere göre güncelledim. Burada Java 8'e erişimim yoktu, bu yüzden tahmin etmeliyim (ve ['WeekFields'] 'ı okumamış gibi görünüyor (http://docs.oracle.com/javase/8/docs/api /java/time/temporal/WeekFields.html) bu farkı açıkladığı için sınıf belgelerini yakından inceleyin. –

+0

@MarkRotteveel Tamam, şimdi benim vardiyam var ;-) Benim için "weekOfWeekBasedYear" adı çok teknik ve can sıkıcı olmaya devam ediyor. . ISO-8601-kağıdı bile bu terimi içermez (sadece "takvim haftası" veya "haftanın tarihi" gibi terimleri kullanır). –

+1

Locale.getDefault() hakkında dikkatli olun. Bazı yerlerde (ör. Kanada) Pazar günü başlayan bir hafta geri dönebilir. Pazartesi günü başlayan haftalarda "Locale.ISO" kullanın. –

İlgili konular