본문 바로가기
IT/Java

[Java] - 자바 LocalDate, LocalTime, LocalDateTime 클래스 사용법(Date, Calendar 대체)

by 차이나는 개발자 2022. 11. 22.
728x90
반응형

#자바 LocalDate, LocalTime, LocalDateTime 클래스 사용법(Date, Calendar 대체)

 

 

#java.time 패키지

-자바에서 날짜와 시간을 다루는 클래스들이 담긴 패키지입니다.

-Date와 Calendar의 단점을 보완하여 나온 패키지입니다.

-JDK1.8 버전에 추가되었습니다.

-핵심 클래스로 LocalDate, LocalTime, LocalDateTime 등이 있습니다.

 

 

#객체 생성 방법

-now() :현재 날짜와 시간을 반환합니다.

-of() :매개변수로 값을 지정할 수 있습니다.

 

 

#LocalDate

-날짜를 표현할 때 사용합니다.

public class SimpleDateFormatExam {
	public static void main(String[] args) {

		LocalDate date1 = LocalDate.now();
		LocalDate date2 = LocalDate.of(2022, 11, 23);

		System.out.println(date1);	// 2022-11-22
		System.out.println(date2);	// 2022-11-23

	}
}

 

 

#LocalTime

-시간을 표한할 때  사용합니다.

public class SimpleDateFormatExam {
	public static void main(String[] args) {

		LocalTime time1 = LocalTime.now();
		LocalTime time2 = LocalTime.of(22,15,50);

		System.out.println(time1);	// 21:36:21.275515
		System.out.println(time2);	// 22:15:50

	}
}

 

 

#LocalDateTime

-날짜와 시간 모두 표현할 때 사용합니다.

public class SimpleDateFormatExam {
	public static void main(String[] args) {

		LocalDateTime dateTime1 = LocalDateTime.now();
		LocalDateTime dateTime2 = LocalDateTime.of(2022,11,22,10,15,50);

		System.out.println(dateTime1);	// 2022-11-22T21:37:45.977473200
		System.out.println(dateTime2);	// 2022-11-22T10:15:50

	}
}

 

 

#get() 메서드를 사용하여 특정 필드의 값을 가져올 수 있습니다.

-Calendar와 다른 점은 LocalDateTime 월의 인덱스는 1~12(Calendar는 0~11)이며 요일은 월요일 1~일요일 7(Calendar 일요일 1~토요일 7)입니다.

 

#주요 get 메서드 종류

-getYear() :년도(2022)를 반환합니다. 

-getMonthValue() :월(11)을 반환합니다.

-getDayOfMonth() :일(22)을 반환합니다.

-getHour() :시간(21)을 반환합니다.

-getMinute() :분(44)을 반환합니다.

-getSecond() :초(55)를 반환합니다.

-getNano() :나노초(805075800)를 반환합니다.

public class SimpleDateFormatExam {
	public static void main(String[] args) {

		LocalDateTime dateTime = LocalDateTime.now();

		System.out.println(dateTime.getYear());			// 2022
		System.out.println(dateTime.getMonthValue()); 	// 11
		System.out.println(dateTime.getDayOfMonth()); 	// 22
		System.out.println(dateTime.getHour());			// 21	
		System.out.println(dateTime.getMinute()); 		// 44	
		System.out.println(dateTime.getSecond()); 		// 55	
		System.out.println(dateTime.getNano());			// 805075800

	}
}

 

 

#ZonedDateTime

-LocalDateTime + 시간대를 표현하는 클래스입니다.

public class SimpleDateFormatExam {
	public static void main(String[] args) {

		ZonedDateTime dateTime = ZonedDateTime.now();

		System.out.println(dateTime);	// 2022-11-22T21:52:56.986823900+09:00[Asia/Seoul]

	}
}

 

 

#toLocalDate(), toLocalTime() 메서드를 사용해서 LocalDateTime을 LocalDate나 LocalTime으로 변환할 수 있습니다.

public class SimpleDateFormatExam {
	public static void main(String[] args) {

		LocalDateTime dateTime = LocalDateTime.now();

		System.out.println(dateTime.toLocalDate()); // 2022-11-22
		System.out.println(dateTime.toLocalTime()); // 21:54:39.005349900

	}
}

 

 

#Period와 Duration 클래스를 사용하여 날짜와 시간의 차이를 계산할 수 있습니다.

-Period :날짜의 차이를 계산하는데 사용합니다.

-Duration :시간의 차이를 계산하는데 사용합니다.

-between() :날짜와 시간의 차이를 계산하는데 사용하는 메서드입니다.

public class SimpleDateFormatExam {
	public static void main(String[] args) {

		LocalDate date1 = LocalDate.of(2022, 10, 11);
		LocalDate date2 = LocalDate.of(2022, 12, 21);
		
		Period pe = Period.between(date1, date2);
		System.out.println(pe); // P2M10D P 2달 10일
		
		LocalTime time1 = LocalTime.of(00, 10, 11);
		LocalTime time2 = LocalTime.of(11, 12, 21);
		
		Duration du = Duration.between(time1, time2);
		System.out.println(du); // PT11H2M10S PT 10시간 2분 10초

	}
}

 

 

 

728x90
반응형

댓글