Jindory
Jindory의 기록 라이프
Jindory
전체 방문자
오늘
어제
11-04 06:04
  • 분류 전체보기
    • 개발
      • AI
      • Java
      • Javascript
      • JPA
      • Python
      • Spring
      • Web
    • 데이터베이스
      • Database
      • Oracle
      • MySQL
    • 코딩테스트
      • 구름IDE
      • 백준
      • 코딩테스트 준비
      • 프로그래머스
    • 분석 및 설계
      • Design Pattern
      • UML
    • 트러블슈팅
      • Java
      • JPA
      • Spring
    • 개발 커리어
      • 면접
      • 멘토링
      • 포트폴리오
      • 프로젝트

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Jindory

Jindory의 기록 라이프

[Java] LocalDate,LocalTime,LocalDateTime 활용하기
개발/Java

[Java] LocalDate,LocalTime,LocalDateTime 활용하기

2022. 11. 2. 08:15
반응형

안녕하세요. 개발자 Jindory입니다.

오늘은 LocalDate, LocalTime, LocalDateTime이 어떤 자료형이며 활용 방법에 대해서 작성해보고자 합니다.

 

# 글 작성 이유

날짜 데이터를 만들기 위해서 LocalDateTime을 자주 사용하는데, 날짜를 생성, 날짜 더하기 빼기 등 활용방법에 대해서 숙지하지 못하고 있는것 같아서 정리해보고자 합니다.


# 날짜 시간 Class 정의 및 초기화

# LocalTime

  • java.time 패키지에서 가장 기본이 되는 클래스이며, 시간를 나타내는 클래스입니다.
  • LocalTime은 시간을 나타내는 변경할 수 없는 날짜 개체로, 종종 시간-분-초로 표시됩니다.
  • 시간은 나노세컨드까지 표현됩니다.
  • 예를들어 13:25.30.123456789"값을 LocalTime에 저장할 수 있습니다.
  • 이 클래스는 날짜나 시간대를 저장하지 않습니다.

생성 및 초기화

// 현재 시간 생성 및 초기화
LocalTime nowTime   		= LocalTime.now(); // 06:36:08.273679500
		
// 특정 시간 생성 및 초기화
LocalTime hourMinute = LocalTime.of(10, 15);	// 10:15
LocalTime hourMinuteSecond = LocalTime.of(10, 15, 32);	// 10:15:32
LocalTime hourMinuteSecondNanoSecond = LocalTime.of(10, 15, 32, 48621);	// 10:15:32.000048621
		
// 특정 기간을 계산하여 시간 계산
LocalTime calculateTime = LocalTime.ofSecondOfDay(86399);	// 23:59:59
		
// 문자를 시간으로 변환
LocalTime convertTime = LocalTime.parse("23:59:59");	// 23:59:59

# LocalDate

  • java.time 패키지에서 가장 기본이 되는 클래스이며, 날짜를 나타내는 클래스입니다.
  • LocalDate는 날짜를 나타내는 변경할 수 없는 날짜 개체로, 종종 년-월-일로 표시됩니다.
  • 요일, 요일 및 요일과 같은/다른 날짜 필드에도 접근이 가능합니다.
  • 예를 들어 "2일 10월 2007년"값을 LocalDate에 저장할 수 있습니다.
  • 이 클래스는 시간의 전보를 저장하거나 나타내지 않습니다

생성 및 초기화

// 현재 날짜 생성 및 초기화
LocalDate nowDate 			= LocalDate.now(); // 2022-10-31
		
// 특정 날짜 생성 및 초기화
LocalDate yearMonthDay = LocalDate.of(2022,10,31);	// 2022-10-31
LocalDate yearMonthTypeDate = LocalDate.of(2022,Month.OCTOBER,31);	// 2022-10-31
		
// 특정 기간을 계산하여 날짜 계산
LocalDate calculateDate = LocalDate.ofYearDay(2022, 300);	// 2022-10-27

		
// 문자를 날짜로 변환
LocalDate convertDate = LocalDate.parse("2022-10-31");	//	2022-10-31

# LocalDateTime

  • LocalDateTime은 날짜-시간을 나타내는 변경할 수 없는 날짜-시간 개체로, 종종 년-월-일-시-분-초로 표시하는 객체입니다.
  • 요일,요일 및 요일과 같은/다른 날짜 및 시간 필드에도 접근할 수 있습니다.
  • 시간은 나노세컨드까지 표현됩니다.
  • 예를들어 "2일 10월 2007 13:45.30.1231234569" 의 날짜-시간을 LocalDateTime에 저장할 수 있습니다.

초기화 및 생성

// 현재 시간,날짜 생성 및 초기화
LocalDateTime nowDateTime 	= LocalDateTime.now();	// 2022-10-31T06:42:19.212309500

       
// 특정 시간,날짜 생성 및 초기화
LocalDateTime dateTime = LocalDateTime.of(2022, 10, 31, 8, 12, 15, 48652);	// 2022-10-31T08:12:15.000048652

LocalDate yearMonthDay = LocalDate.of(2022,10,31);
LocalTime hourMinute = LocalTime.of(10, 15);

LocalDateTime dateTypeTimeType = LocalDateTime.of(yearMonthDay,hourMinute);	// 2022-10-31T10:15

# 날짜 및 시간 변경

* 원하는 날짜와 시간으로 변경

// 원하는 시간으로 변경
LocalTime hourMinuteSecondNanoSecond = LocalTime.of(10, 15, 32, 48621);
LocalTime changeHour = hourMinuteSecondNanoSecond.withHour(17);	// 17:15:32.000048621
LocalTime changeMinute = hourMinuteSecondNanoSecond.withMinute(24);	// 10:24:32.000048621
LocalTime changeSecond = hourMinuteSecondNanoSecond.withSecond(46);	// 10:15:46.000048621
LocalTime changeNanoSecond = hourMinuteSecondNanoSecond.withNano(12345); // 10:15:32.000012345

// 원하는 날짜로 변경
LocalDate yearMonthDay = LocalDate.of(2022,10,31);
LocalDate changeYear = yearMonthDay.withYear(2013);	// 2013-10-31
LocalDate changeMonth = yearMonthDay.withMonth(7);	// 2022-07-31
LocalDate changeDay1 = yearMonthDay.withDayOfMonth(15);	// 2022-10-15
LocalDate changeDay2 = yearMonthDay.withDayOfYear(15);	// 2022-01-15

* 원하는 시간 더하고 / 빼기

// 원하는 시간 더하기
LocalTime hourMinuteSecondNanoSecond = LocalTime.of(10, 15, 32, 48621);
LocalTime plusHours = hourMinuteSecondNanoSecond.plusHours(4);	// 14:15:32.000048621
LocalTime plusMinutes = hourMinuteSecondNanoSecond.plusMinutes(50);	// 11:05:32.000048621
LocalTime plusSeconds = hourMinuteSecondNanoSecond.plusSeconds(40); // 10:16:12.000048621
LocalTime plusNanoSeconds = hourMinuteSecondNanoSecond.plusNanos(100000); // 10:15:32.000148621

// 원하는 시간 빼기
LocalTime minusHours = hourMinuteSecondNanoSecond.minusHours(11);	// 23:15:32.000048621
LocalTime minusMinutes = hourMinuteSecondNanoSecond.minusMinutes(35); // 09:40:32.000048621
LocalTime minusSeconds = hourMinuteSecondNanoSecond.minusSeconds(52); // 10:14:40.000048621
LocalTime minusNanoSeconds = hourMinuteSecondNanoSecond.minusNanos(48621); // 10:15:32

// 원하는 날짜 더하기
LocalDate yearMonthDay = LocalDate.of(2022,10,31);
LocalDate plusYear = yearMonthDay.plusYears(100);	// 2122-10-31
LocalDate plusMonth = yearMonthDay.plusMonths(6);	// 2023-04-30
LocalDate plusWeeks = yearMonthDay.plusWeeks(2);	// 2022-11-14
LocalDate plusDays = yearMonthDay.plusDays(15); 	// 2022-11-15

// 원하는 날짜 빼기
LocalDate minusYear = yearMonthDay.minusYears(100);	// 1922-10-31
LocalDate minusMonth = yearMonthDay.minusMonths(6);	// 2022-04-30
LocalDate minusWeeks = yearMonthDay.minusWeeks(2);	// 2022-10-17
LocalDate minusDays = yearMonthDay.minusDays(15);	// 2022-10-16

# 날짜 전후 비교

compareTo를 사용하면 비교하는 날짜와 비교 대상 날짜가 같으면 0, 이전이면 -1, 이후면 1을 반환합니다.

isBefore, equals/isEqual, isAfter를 사용하면 비교하는 날짜와 비교 대상 날짜

isBefore : 이전이면 true, 같거나 이후면 false

equals/isEqual : 같으면 true, 이전이나 이후면 false

isAfter : 이후면 true, 같거나 이후면 false

모든 필드가 일치해야하는 equals()와 달리 isEqual()은 오직 날짜만 비교합니다.

// 시간 전후관계 비교
LocalTime time1 = LocalTime.of(10, 15, 32, 48621);
LocalTime time2 = LocalTime.of(10, 25, 18, 78521);
LocalTime time3 = LocalTime.of(9, 30, 59, 48923);

// compareTo로 비교하는 시간 전후관계 비교
int beforeTime = time1.compareTo(time2);	// -1
int sameTime = time1.compareTo(time1);		// 0
int afterTime = time1.compareTo(time3);		// 1

// isBefore, isEqual, isAfter로 시간 전후관계 비교
boolean isBeforeTime = time1.isBefore(time2);	// true
boolean isEqualTime = time1.equals(time1);		// true
boolean isAfterTime = time1.isAfter(time3);		// true

// 날짜 전후관계 비교
LocalDate date1 = LocalDate.of(2022,10,31);
LocalDate date2 = LocalDate.of(2025,05,25);
LocalDate date3 = LocalDate.of(2000,11,11);

// compareTo로 비교하는 날짜 전후관계 비교
int beforeDate = date1.compareTo(date2);	// -1
int sameDate = date1.compareTo(date1);		// 0
int afterDate = date1.compareTo(date3);		// 1

// isBefore, isEqual, isAfter로 비교하는 시간 전후관계 비교
boolean isBeforeDate = date1.isBefore(date2);	// true
boolean isEqualDate = date1.isEqual(date1);		// true
boolean isAfterDate = date1.isAfter(date3);		// true

이렇게 LocalDate, LocalTime, LocalDateTime이 어떤 자료형이며 활용 방법에 대해서 알아봤습니다.

 

혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.

오늘도 Jindory 블로그에 방문해주셔서 감사합니다.

반응형
저작자표시 비영리 (새창열림)

'개발 > Java' 카테고리의 다른 글

[JAVA] JVM 메모리 구조  (0) 2023.12.13
[Java] 컴퓨터가 실수를 표현하는 방법과 실수 연산시 주의사항(IEEE 754)  (0) 2023.12.12
[Java] Windows 환경에서 jdk버전 2개 이상 관리  (0) 2022.09.26
[Java] Collection Framework(List,Set,Map)  (0) 2022.04.17
[Java] Java 접근제한자/public,protected,default,private  (0) 2022.04.15
    '개발/Java' 카테고리의 다른 글
    • [JAVA] JVM 메모리 구조
    • [Java] 컴퓨터가 실수를 표현하는 방법과 실수 연산시 주의사항(IEEE 754)
    • [Java] Windows 환경에서 jdk버전 2개 이상 관리
    • [Java] Collection Framework(List,Set,Map)
    Jindory
    Jindory

    티스토리툴바