Java
Java의 날짜와 시간
gimyeondong
2022. 9. 28. 21:31
Date, Calendar
날짜와 시간을 다루는 java.util.Date 클래스와 java.util.Calendar 클래스는 잘 사용되지 않는다.
그 이유는
- 직관적이지 않은 요일 상수, 월 상수
- 기본적으로 불변이 아니기에 멀티스레스에 안전하지 않음
- SimpleDateFormat의 기묘한 에러 처리
LocalDate, LocalTime, LocalDateTime
java8에서 추가된 날짜와 시간 관련 클래스
.now()
LocalDate localDate = LocalDate.now();
System.out.println("localDate: "+localDate);
LocalTime localTime =LocalTime.now();
System.out.println("localTime: "+localTime);
LocalDateTime localDateTime =LocalDateTime.now();
System.out.println("localDateTime: "+localDateTime);
.of()
LocalDate localDate = LocalDate.of(2022,09,27);
System.out.println("localDate: "+localDate);
LocalTime localTime =LocalTime.of(23,12,56,234);
System.out.println("localTime: "+localTime);
LocalDateTime localDateTime =LocalDateTime.of(2022,09,27,23,12,56,234);
System.out.println("localDateTime: "+localDateTime);
LocalDate localDateNov = LocalDate.of(2022, Month.SEPTEMBER,27);
System.out.println("localDateNov: "+localDateNov);
.plus .minus 더하고 빼기
System.out.println("Today: "+LocalDate.now());
LocalDate todayPlus10Days=LocalDate.now().plusDays(10);
System.out.println("localDatePlus10: "+todayPlus10Days);
System.out.println("Time Now: "+LocalTime.now());
LocalTime nowMinus20Minutes=LocalTime.now().minusMinutes(20);
System.out.println("nowMinus20Minutes: "+nowMinus20Minutes);
System.out.println("Date-Time Now: "+LocalDateTime.now());
LocalDateTime nowPlus2Years =LocalDateTime.now().plusYears(2);
System.out.println("todayPlus2Years: "+nowPlus2Years);
.with()
System.out.println("Today: "+LocalDate.now());
LocalDate dayOfMonth20=LocalDate.now().withDayOfMonth(20);
System.out.println("Day of month set as 20: "+dayOfMonth20);
System.out.println("Time Now: "+LocalTime.now());
LocalTime minute0=LocalTime.now().withMinute(0);
System.out.println("Minutes set to 0: "+minute0);
System.out.println("Date-Time Now: "+LocalDateTime.now());
LocalDateTime month10 =LocalDateTime.now().withMonth(10);
System.out.println("Month set to 10: "+month10);
.get() 개별 값 꺼내기
System.out.println("Today: "+LocalDate.now());
int dayOfMonth=LocalDate.now().getDayOfMonth();
System.out.println("Day of month is: "+dayOfMonth);
System.out.println("Time Now: "+LocalTime.now());
int minute=LocalTime.now().getMinute();
System.out.println("Minutes value is: "+minute);
System.out.println("Date-Time Now: "+LocalDateTime.now());
Month month = LocalDateTime.now().getMonth();
System.out.println("Month value is: "+month.getValue());
참고자료
java 날짜 관련 Date,Calendar,SimpleDateFormat 문제점 by 코드 다이버
Java의 날짜와 시간 API
기본기를 쌓는 정아마추어 코딩블로그:티스토리
Java 8 – Working with LocalDate, LocalTime, LocalDateTime – tutorial with examples