본문 바로가기
☕Java/Java 기본

날짜, 시간, 포맷팅

by 캔 2023. 7. 11.

Date, Calendar

  • Date - JDK 1.0부터 있던 클래스
  • Calendar - Date를 보완한 클래스. JDK 1.1부터 제공됨.

Calendar

  • Calendar 사용 시에는 static 메서드인 getInstance()로 생성. (GregorianCalendar, BuddhistCalendar 등 시스템 설정에 맞춰 알맞은 구현 클래스 반환해 줌)
  • 현재 날짜를 설정할 때에는 Date 클래스가 여전히 필요하다.
  • Date date = new Date(); Calendar calendar = Calendar.getInstance(); calenar.setTime(date);
  • get(Calendar 상수들)로 날짜 시간 요소 가져올 수 있음.
  • 차이 구할 때는 getTimeMillis()로 계산 후 알맞은 단위로 변환

포맷팅

  • 자바에서는 숫자, 텍스트, 날짜 데이터를 일정한 형식에 맞게 표현할 수 있게 하는 클래스를 제공함.
  • DecimalFormat(숫자), SimpleDateFormat(Date 타입), ChoiceFormat(숫자 배열), MessageFormat(문자열 배열)

java.time 패키지

  • JDK 1.8 이후부터 제공하는 날짜, 시간 관련 클래스.
  • 불변 클래스들이라서 날짜나 시간을 변경하는 메서드들이 항상 새로운 객체를 반환함.
  • LocalDate + LocalTime = LocalDateTime
  • LocalDatTime + 시간대 = ZonedDateTime
  • Instant: 날짜와 시간을 나노 초 단위로 표현. 에포크 타임(1970-01-01 00:00:00 UTC)부터 경과된 시간을 나노초 단위로 표현
  • Period: 두 날짜 간의 차이
  • Duration: 두 시각의 차이
  • 날짜, 시간 표현 클래스들은 Temporal, TemporalAccessor, TemporalAdjuster 인터페이스를 구현.
  • Period, Duration은 TemporalAmount 인터페이스를 구현
  • 필드 값 변경 시 withXXX(), plusXXX(), minusXXX() 메서드 사용
  • 비교 시 isAfter(), isBefore(), isEqual() 메서드 사용
  • 이번달의 3번째 금용일 같은 날짜 계산은 TemporalAdjusters의 메서드 사용.