웹개발/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로 재구성하다