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