TL; DR
DayOfWeek.from(LocalDate.now())
일주일 일정
을 설정하여 현재 요일을 찾는 방법
LocalDate sunday =
LocalDate.now()
.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)) ;
LocalDate monday = sunday.plusDays(1) ;
LocalDate tuesday = monday.plusDays(1) ;
…
세부 사항
질문 및 기타 답변 모두 구식 클래스를 사용합니다.
오래된 날짜/시간 클래스는 잘못 설계되었거나 혼란스럽고 번거로운 클래스입니다. 그들을 피하십시오.
java.time
자바 8에서
이후, 우리가 사용하는 내장 java.time 프레임 워크. 많은 기능이 Java 6 & 7 (ThreeTen-Backport)으로 다시 포팅되고, Android (ThreeTenABP)에 추가로 적용됩니다.
Instant
은 최대 나노초까지의 현재 시간을 UTC로 나타냅니다.
Instant instant = Instant.now();
날짜를 결정하려면 요일을 결정해야합니다. 시간대는 날짜를 결정할 때 중요합니다. 날짜는 특정 순간에 지구 곳곳에 따라 다를 수 있기 때문입니다. 예를 들어, 파리에서 자정 이후 몇 분 후에 새로운 날이 오는 반면 몬트리올에서는 여전히 "어제"입니다.
ZoneId
을 사용하여 시간대를 나타냅니다. continent/region
형식의 proper time zone name을 요청하십시오. 주류 미디어에서 흔히 볼 수있는 3-4 자 약어는 절대로 표준 시간대가 아니며 고유하지 않으므로 사용하지 마십시오 (!).
ZoneId zoneId = ZoneId.of("America/Montreal");
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant , zoneId);
간편한 DayOfWeek
enum을 사용하여 요일을 결정하십시오.
DayOfWeek dow = DayOfWeek.from(zdt);
DayOfWeek
개체를 조사 할 수 있습니다.
ask for a number 1부터 7까지 일요일은 1 일이고, 일요일은 ISO 8601 표준입니다.그러나 코드 주위에이 숫자를 전달하지 마십시오. 대신 DayOfWeek
객체를 전달하여 유형 안전성과 유효한 유효 값의 이점을 누립니다.
int dowNumber = dow.getValue();
요일 이름은 텍스트 일 수 있습니다. java.time이 이름을 자동으로 인간 언어로 변환하도록합니다. A Locale
종족은 인간의 언어이며, 약어 및 대문자 사용법과 같은 문화적 규범을 지정합니다. TextStyle
열거 형은 원하는 이름의 길이를 나타냅니다.
Locale locale = Locale.CANADA_FRENCH;
String output = dow.getDisplayName(TextStyle.FULL , locale);
은 일주일의 시작을 얻기 이전의 월요일 (일요일, 무엇이든)을 요청하거나이 월요일 인 경우 오늘을 고수합니다.
TemporalAdjusters
클래스에있는
TemporalAdjuster
구현을 사용하십시오.
LocalDate startOfWeek = zdt.toLocalDate().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
당신이 날짜 전용이 아닌 날짜와 시간을 필요로하는 경우, 일 (항상 시간 00:00:00
)의 첫 순간을 얻을 수 java.time를 부탁드립니다. java.time
소개
ZonedDateTime zdtWeekStart = startOfWeek.atStartOfDay(zoneId);
은
java.time 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는
java.util.Date
,
Calendar
, &
SimpleDateFormat
과 같이 문제가있는 이전
legacy 날짜 - 시간 클래스를 대체합니다.
maintenance mode에있는 Joda-Time 프로젝트는 java.time 클래스로의 마이그레이션을 권장합니다.
자세히 알아 보려면 Oracle Tutorial을 참조하십시오. 그리고 많은 예제와 설명을 위해 스택 오버플로를 검색하십시오. 사양은 JSR 310입니다.
어디에서 java.time 클래스를 얻을 수 있습니까?
ThreeTen-Extra 프로젝트는 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 가능성을 입증합니다. 여기에 Interval
, YearWeek
, YearQuarter
및 more과 같은 유용한 클래스가 있습니다.
여기서 무엇을하려하는지 완전히 명확하지 않습니다. 귀하의 방법은 일요일에 시작됩니다. 달력의 형식화 된 날짜 문자열을 반환합니다.이 문자열에는 지정되지 않은 시작 날짜가 포함되어 있습니다.이 날짜는 해당주의 첫 번째 날에서 무언가를 빼서 계산 한 일 수만큼 앞으로 이동합니다. 시작일은 무엇입니까? 너는 무엇을 돌려 주려고 하는가? –
cal은 인스턴스를 가져 오는 Calendar 클래스 아래에 만들어집니다. 그것은 생성자 아래에서 초기화되었고 내가 시도한 것은 적절한 날짜 인 "thurs"아래에 일 날짜 "3/11"을 정렬하는 것이 었습니다. – TLM