2016-06-14 4 views
3

를 사용하여 요일을 설정 I가 평일 설정 다음 Joda 타임 코드 : 나는 java.time와 동일한 기능을 수행 할 수있는 방법방법 java8

LocalDateTime localDateTime = new LocalDateTime(2016, 1, 1, 20,39); 
LocalDateTime localDateTime1 = localDateTime.withDayOfWeek(7); 

를? 나는 더 setDayOfTheWeek가 없음을 참조하십시오

LocalDateTime time; 
time.getDayOfWeek() 

답변

2

당신은 그것을 할 수있는 몇 가지 방법이 있습니다 LocalDateTime는 불변하지 아니 setDayOfTheWeek 때문에

LocalDateTime localDateTime = LocalDateTime.of(2016, 1, 1, 20, 39); 

LocalDateTime ldt1 = localDateTime.with(ChronoField.DAY_OF_WEEK, 7); 
LocalDateTime ldt2 = localDateTime.with(DayOfWeek.of(7)); 
//Or, more readable, as suggested by @AndyTurner 
LocalDateTime ldt3 = localDateTime.with(DayOfWeek.SUNDAY); 
2

그것은이를, 그래서 객체를 수정 할 세터가 없습니다. (조다 타임 클래스도 불변입니다!). 자바 8

사용이 :

LocalDateTime localDateTime = LocalDateTime.of(2016, 1, 1, 20,39); 
LocalDateTime localDateTime1 = localDateTime.with(DayOfWeek.SUNDAY); 
1

java.time API는 withDayOfWeek(DayOfWeek) 방법이 없습니다. 그러나 대신 사용할 수있는 일반 with(TemporalAccessor) 방법이 있는가하면 :

LocalDateTime dt = base.with(DayOfWeek.WEDNESDAY); 

그러나이 수요일을 선택하는지에 대한 질문을 (실제로 일요일 주에 월요일에서 날짜 변경)를 엽니 다 떠난다.

import static java.time.DayOfWeek.WEDNESDAY; 
import static java.time.temporal.TemporalAdjusters.next; 

LocalDateTime dt = base.with(next(WEDNESDAY)); 

이는 기준일 이후 다음주 수요일에 날짜를 변경 : 더 좋은 방법은 좀 더 명시 적으로 만들기 위해 TemporalAdjuster을 사용하는 것입니다. 옵션을 사용할 수 이해 TemporalAdjusters를 참조하십시오

  • next(DayOfWeek)
  • nextOrSame(DayOfWeek)
  • previous(DayOfWeek)
  • previousOrSame(DayOfWeek)
  • firstInMonth(DayOfWeek)
  • lastInMonth(DayOfWeek)
  • dayOfWeekInMonth(int, DayOfWeek)