자바 - DateTime

SeungTaek·2021년 8월 26일
0

자바(Java)

목록 보기
6/8
post-thumbnail

본 게시물은 스스로의 공부를 위한 글입니다.
틀린 내용이 있을 수 있습니다.

📒 Date-Time 주요 기능

  • 기계용 시간 (machine time)과 인류용 시간(human time)으로 나눌 수 있다.
    • 기계용 시간은 EPOCK (1970년 1월 1일 0시 0분 0초)부터 현재까지의 타임스탬프를
      표현한다.
    • 인류용 시간은 우리가 흔히 사용하는 연, 월, 일, 시, 분, 초 등을 표현한다
  • 타임스탬프는 Instant를 사용한다.
  • 특정 날짜(LocalDate), 시간(LocalTime), 일시(LocalDateTime)를 사용할 수 있다
  • 기간을 표현할 때는 Duration (시간 기반)과 Period (날짜 기반)를 사용할 수 있다.
  • DateTimeFormatter를 사용해서 일시를 특정한 문자열로 포매팅할 수 있다.

📒 기계 시간 표현

Instant instant = Instant.now(); //UTC, GMT 기준

//시스템 zone 기준. ZonedDateTime=LocalDateTime+타임존
ZonedDateTime zonedDateTime =  instant.atZone(ZoneId.systemDefault()); 

📒 사람용 일시 표현

LocalDateTime.now(); //현재 시스템 Zone에 해당하는(로컬) 일시를 리턴한다.
LocalDateTime.of(year, month, day); //설정한 일시를 리턴한다.
ZonedDateTime.now(ZoneId.of("지역명")); //특정 Zone의 특정 일시를 리턴한다.

📒 기간을 표현하는 방법: Period, Duration

//Preiod.between으로 구하면 년, 월, 일이 따로따로 구해짐
Period between = Period.between(localDate1, localDate2);
System.out.println(between.getDays()); 

//차이 일수를 구할 수 있다.
System.out.println("between = " +  ChronoUnit.DAYS.between(localDate1, localDate2)); 

Period between2 = localDate1.until(localDate2);
System.out.println(between2.get(ChronoUnit.DAYS));

Duration between3 = Duration.between(instant1, instant2);
System.out.println(between3.getSeconds());

📒 파싱, 포매팅

  • LocalDateTime.parse(String, DateTimeFormatter);
  • 연도: yyyy, 달: MM, 일: dd, 시: HH, 초: ss
  • 미리 정의된 포맷를 이용해 DateTimeFormatter을 정의할 수 있다.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/d/yyyy HH-mm-ss");

LocalDate date = LocalDate.parse("07/15/1982", formatter);
System.out.println(date);

LocalDateTime now = LocalDateTime.now();
System.out.println(now.format(formatter));

Reference

인프런 더 자바(백기선)

profile
I Think So!

0개의 댓글