코딩과 결혼합니다

230926 - 자바의 정석 chapter 10 (날짜와 시간 & 형식화) 본문

2세/Java

230926 - 자바의 정석 chapter 10 (날짜와 시간 & 형식화)

코딩러버 2023. 9. 27. 10:05
728x90

날짜와 시간


⭐Calender와 Date

  • java.util.Date
    • 날짜와 시간을 다룰 목적으로 만들어진 클래스
    • Date의 메서드는 거의 deprecated 되었지만, 여전히 쓰이고 있다.
  • java.util.Calender
    • Date 클래스를 개선한 새로운 클래스(JDK1.1)
  • java.time 패키지
    • Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공(JDK1.8)

 

 

⭐Calender 클래스

  • Calender 는 추상 클래스로 getInstance()를 통해 구현된 클래스의 인스턴스를 얻어야 한다.(직접 객체 생성x)
  • GregorianCalendar와 BuddhistCalendar
    • Calendar를 상속받아 완전히 구현한 클래스로 getInstance()는 시스템의 국가와 지역설정을 확인해서 태국인 경우에는 BuddhistCalendar의 인스턴스를 반환하고, 그 외에는 GregorianCalendar의 인스턴스를 반환한다.
  • Date와 Calendar간의 변환
//Calendar를 Date로 변환

Calendar cal = Calendar.getInstance();
...
Date d = new Date(cal.getTimeMillis());


//Date를 Calendar로 변환

Date d = new Date();
...
Calendar cal = Calendar.getInstance();
cal.setTime(d);

형식화 클래스


⭐DeciamlFormat

  • 숫자를 형식화 하는데 사용 : 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있으며, 반대로 일정한 형식의 텍스트 데이터를 숫자로 쉽게 변환하는 것도 가능하다.
double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0");
String result = df.format(number);

 

⭐SimpleDateFormat

  • 날짜를 형식화
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyy-MM-dd");
String result = df.format(today);

 

⭐ChoiceFormat

  • 특정 범위에 속하는 값을 문자열로 변환

 

⭐MessageFormat

  • 데이터를 정해진 양식에 맞게 출력할 수 있도록 해준다.

java.time패키지


LocalDate + LocalTime -> LocalDateTime
LocalDateTime + 시간대 -> ZpnedDateTime

 

⭐Period와 Duration

날짜 - 날짜 = Period
시간 - 시간 = Duration

 

⭐객체 생성하기 - now(), of()

LocalDate date = LocalDate.now();		
LocalDate date = LocalDate.of(2023, 9, 27);

 

⭐Temporal과 TemporalAmount

  • Temporal, TemporalAccessor, TemporalAdjuster를 구현한 클래스
    • LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant
  • TemporalAmount를 구현한 클래스
    • Period, Duration

 

⭐TemporalUnit과 TemporalField

  • TemporalUnit
    • 날짜와 시간의 단위를 정의해 놓은 인터페이스
  • TemporalField
    • 년, 월, 일 등 날짜와 시간의 필드를 정의해 놓은 인터페이스

 

⭐Instant :  에포크 타임(EPOCH TIME, 1970-10-01 00:00:00 UTC)부터 경과된 시간을 나노초 단위로 표현한다.

 

DateTimeFormatter : 자주 쓰이는 다양한 형식들을 기본적으로 정의하고 있으며, 그 외의 형식이 필요하다면 직접 정의해서 사용할 수도 있다.