2014-09-24 12 views

답변

20

작은 경고 하나. 나는 아직 테스트하지 않은,하지만 WeekFieldsLocalDate.get의 API 문서를보고, 당신은 같은 것을 수행해야합니다

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()에주의하십시오. 일부 지역 (예 : 캐나다)에서는 일요일에 시작하는 주를 반환 할 수 있습니다. 월요일부터 시작하여 수주 동안 "Locale.ISO"를 사용하십시오. –

+1

Locale.ISO가 없지만 'WeekFields.ISO'가 있습니다. –

24

마크 Rotteveel의 대답은 거의 바로 다시 예이다가 혼동 가능성의 종류 WeekFields (유사한 발음 방식 이름이지만 직관적 인 사용법에서 벗어남)에 있습니다. 오른쪽 코드는 다른 필드가 필요합니다

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

이 @kleopatra의 대답에 대해,이 SO-post에도 특히 토론과 의견을 유사한 논쟁을 참조하십시오.

+0

본인의 답변을 기반으로 업데이트했습니다. 여기에 Java 8에 대한 액세스 권한이 없었기 때문에 추측해야했습니다 ([WeekFields] (http://docs.oracle.com/javase/8/docs/api)를 읽지 않은 것처럼 보입니다. /java/time/temporal/WeekFields.html) 클래스 문서를 자세히 설명해 드리겠습니다. –

+0

@MarkRotteveel 이제 내 upvote ;-)가 있습니다. "weekOfWeekBasedYear"라는 이름은 너무 기술적이며 짜증납니다. . ISO-8601 종이조차이 용어를 포함하지 않습니다 ("달력 주"또는 "주일"과 같은 용어 만 사용함). –

+1

Locale.getDefault()에주의하십시오. 일부 지역 (예 : 캐나다)에서는 일요일에 시작하는 주를 반환 할 수 있습니다. 월요일부터 시작하여 수주 동안 "Locale.ISO"를 사용하십시오. –