웹개발/JAVA

API -JavaTime Package

bergerac 2025. 3. 2. 09:11

JavaTime Package

Iso-8601 표준을 기반으로 설계되었고, import 문을 사용하여 class를 명시해야 한다.

-국제표준

YYYY-MM-DDthh:mm:ss.sssZ

 

 

1)LocalDate - 날짜 : 날짜(년, 월, 일)

import java.time.LocalDate;
  • .now() : 현재 날짜를 반환한다.
LocalDate today = LocalDate.now();//현재 날짜를 반환한다.
System.out.println(today); // 2025-02-19
  • .of(연도 , 월 , 일) : 특정 날짜를 국제 표기법상 반환
LocalDate yesterday = LocalDate.of(2025, 2, 18);
System.out.println(yesterday); // 2025-02-18
  • .plus(Years, Months, Days): N년 후, N달 후, N일 후
LocalDate tomorrow = today.plusDays(1);
System.out.println(tomorrow); // 2025-02-20

 

  • .minus(Years, Months, Days): N년 전, N달 전, N일 전
LocalDate oneMonthsAgo = today.minusMonths(1);
System.out.println(oneMonthsAgo); // 2025-01-19

 

 

2)LocalTime - 시간만 다루고 날짜와 시간대 정보는 포함하지 않는다.

import java.time.LocalTime;
  • .now() - 현재 시간 반환
LocalTime now = LocalTime.now();
System.out.println(now); // 11:12:28.215875800
  • .of(시, 분, 초) - 특정 시간을 표준 형태로 반환
LocalTime lunchTime = LocalTime.of(12, 50);
System.out.println(lunchTime); // 12:50

*LocalTime에서도 마찬가지로 Plus와 Minus를 사용할 수 있다.

// .plus(Hours, Minutes, Seconds)
// .minus(Hours, Minutes, Seconds)

LocalTime restTime = now.plusMinutes(35);
System.out.println(restTime); // 11:50:07.926675400

 

3)LocalDateTime - 날짜와 시간을 함께 다루는 클래스

- 위 두 경우와 마찬가지로 .now(), .of(), .plus~(), .minus~() 사용 가능하다.

import java.time.LocalDateTime;

 

4)get Method - 날짜나 시간의 특정 요소만을 반환하고 싶을 때

// : getYear(), getMonth(), getDayOfMonth(): 날짜 정보를 반환
// : getHour(), getMinute(), getSecond(): 시간 정보를 반환
System.out.println(today.getYear()); // 2025
System.out.println(today.getMonth()); // FEBRUARY - 키워드 반환
System.out.println(today.getDayOfMonth()); // 19

 

5)날짜/시간 포메팅

포메팅(Formatting) 이란?    원하는 형식으로 출력하는 것.

import java.time.format.DateTimeFormatter;
    LocalDateTime example = LocalDateTime.now();
    System.out.println(example); // 2025-02-19T11:22:10.591169200

    // DateTimeFormatter: LocalDateTime의 날짜/시간 데이터를 원하는 패턴으로 변경
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yy-MM-dd HH:mm:ss");

    // 변경할 날짜/시간 데이터.format(원하는 포맷 형식)
    System.out.println(example.format(formatter)); // 25-02-19 11:24:33

 

 

<예제>

// == 생일까지 남은 일수를 계산하는 프로그램 == //
// : 사용자로부터 생년월일을 입력받고, 다가오는 생일까지 남은 일수를 반환

 

1. 사용자로부터 생년월일 입력 받기 (형식 YYYY-MM-DD)

Scanner sc = new Scanner(System.in);
System.out.println("생년월일을 YYYY-MM-DD 형태로 입력하세요");
String inputDate = sc.nextLine();

2. 사용자의 입력을 LocalDate 타입으로 변환한다.(format)

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//cf).ofPattern()에서 쓰이는 형식 키워드는 월(M) 시(H) 분(m)외에는 모두 소문자

-LocalDate.parse(a,b)를 사용하면 a 를 b로 재구성하다