본문 바로가기

내배캠/TIL

Java 날짜 함수

Calendar

- 날짜와 시간을 다루는 클래스

- java.util 패키지에 포함되어 있다.

 

상수 설명
YEAR 년도

MONTH
0 - 11 (1월 - 12월)
DAY_OF_MONTH
DAY_OF_WEEK 요일
1 - 7 (일 - 토)
AM_PM 오전 오후
0, 1 (오전, 오후)
HOUR 시간
0 - 11
HOUR_OF_DAY 시간
0 - 23
MINUTE
SECOND
DATE 이 달의 마지막 일

 

 

SimpleDateFormat

- 날짜 형식 클래스

- 날짜를 원하는 형식으로 표현하기 위해 패턴 사용

 

기호 의미
G 연대 (BC, AD)
y 년도
M 월 (1~12 또는 1월~12월)
w 년의 몇 번째 주 (1~53)
W 월의 몇 번째 주 (1~5)
D 년의 몇 번째 일 (1~366)
d 월의 몇 번째 일( 1~31)
F 월의 몇 번째 요일 (1~5)
E 요일
a 오전/오후 (AM,PM)
H 시간 (0~23)
k 시간 (1~24)
K 시간 (0~11)
h 시간 (1~12)
m 분 (0~59)
s 초 (0~59)
S 천분의 일초 (0~999)
z Time zone (General time zone)

ex) GMT+9:00
Z Time zone (RFC 822 time zone)

ex) +0900
' escape문자 (특수문자를 표현하는데 사용)

 

 

[코드 예시]

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

	public static void main(String[] args) {
		
		Date today = new Date();
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd \n오늘은 올 해의 w번째 주입니다.");
		String result = sdf.format(today);
		
		System.out.println(result);
	}

}

 

 

LocalDate

- Java 8부터 사용 가능

- java.time 패키지 (해당 패키지를 사용하는 것이 Calendar 클래스나 date 클래스를 사용하는 것보다 바람직하다)

- 로컬 날짜 클래스로 날짜 정보만 필요할 때 사용

 

// 로컬 컴퓨터의 현재 날짜 정보를 저장한 LocalDate 객체를 리턴
LocalDate currentDate = LocalDate.now();
// result : 2019-11-13

// 파라미터로 주어진 날짜 정보를 저장한 LocalDate 객체를 리턴한다.
LocalDate targetDate = LocalDate.of(2019,11,12);
 //결과 : 2019-11-12

 

객체의 형변환

// LocalDate -> String 
LocalDate.of( 2022, 12, 12 ).format( DateTimeFormatter.BASIC_ISO_DATE); // 20221212

// String -> LocalDate 
LocalDate.parse( "20221212", DateTimeFormatter.BASIC_ISO_DATE); // 2022-12-12 
LocalDate localDate = LocalDate.parse( "2022-12-25" ); // 2022-12-25

// LocalDate -> java.sql.Date
Date.valueOf( LocalDate.of( 2022, 12, 12 ) ); // 2022-12-12 

// java.sql.Date -> LocalDate
new Date( System.currentTimeMillis() ).toLocalDate(); // 2022-12-12

 

유용한 메소드

// 특정 날짜의 요일 구하기 
LocalDate.of( 2022, 12, 12 ).getDayOfWeek(); // MONDAY

// 특정 날짜로부터 일, 월, 주, 연 차이 나는 날짜 구하기 
localDate.minusDays( 5 ); // @param long daysToSubtract
localDate.minusMonths( 5 ); // @param long daysToSubtract
localDate.minusWeeks( 5 ); // @param long daysToSubtract
localDate.minusYears( 5 ); // @param long daysToSubtract

// 특정 날짜로부터 몇 일 이후 날짜 구하기 ( 위와 유사 ) 
localDate.plusDays( 7 ); // @param long amountToAdd 

// 특정 날짜가 해당하는 주의 특정 요일 일자 구하기 
localDate.with( DayOfWeek.FRIDAY); // 2022-12-16 ( @param DayOfWeek )

// 특정 날짜에서 특정 부분만 바꾸기 
LocalDate localDate = LocalDate.now(); // 2022-12-12

localDate.withDayOfMonth( 31 ); // 2022-12-31 ( @param int dayOfMonth )
localDate.withMonth( 1 ); // 2022-01-12 ( @param int month )
localDate.withYear( 2023 ); // 2023-12-12 ( @param int year )

// 윤년 여부 
localDate.isLeapYear(); // false 

// 해당 월의 첫째 날 구하기 
localDate.withDayOfMonth( 1 );

// 해당 월의 마지막 날 구하기 
localDate.withDayOfMonth( localDate.lengthOfMonth() );

// 두 날짜 사이의 간격 구하기 
LocalDate start = LocalDate.of( 2021, 10, 1 );
LocalDate end = LocalDate.of( 2022, 12, 31 );

Period diff = Period.between( start, end );

diff.getYears(); // 1
diff.getMonths(); // 2 
diff.getDays(); // 30 

// ChronoUnit 을 이용한 두 날짜 사이 간격 구하기
long diffMonth = ChronoUnit.MONTHS.between( start, end ); // 14
long diffWeek = ChronoUnit.WEEKS.between( start, end ); // 65
long diffDay = ChronoUnit.DAYS.between( start, end ); // 456

 

 

 

LocalTime

- 시간 정보만 필요할 때 사용

 

[코드 예시]

// 로컬 컴퓨터의 현재 시간 정보를 저장한 LocalDate 객체를 리턴. 
LocalTime currentTime = LocalTime.now();   
// 결과 : 18:34:22

// 파라미터로 주어진 시간 정보를 저장한 LocalTime 객체를 리턴.
LocalTime targetTime = LocalTime.of(12,33,35,22); 
// 끝에 4번째 매개변수는 nanoSecond 인데 선택 값이다 굳이 쓰지 않아도 된다.
// 결과 : 12:32:33.0000022

 

LocalDateTime

 

- 날짜와 시간 정보 모두가 필요할 때 사용

 

[코드 예시]

// 로컬 컴퓨터의 현재 날짜와 시간 정보
LocalDateTime currentDateTime = LocalDateTime.now();    
// 결과 : 2019-11-12T16:34:30.388

LocalDateTime targetDateTime = LocalDateTime.of(2019, 11, 12, 12, 32,22,3333);
// 여기도 second,nanoSecond 매개변수는 필수가 아닌 선택입니다.
// 결과 : 2019-11-12T12:32:22.000003333

 

 

 

 

 

 

 

 

[참고자료]

https://velog.io/@hyun_ha/JAVA-Calendar-%ED%81%B4%EB%9E%98%EC%8A%A4-%ED%98%95%EC%8B%9D%ED%99%94

 

[JAVA] Calendar 클래스 & 형식화

📝 Calendar 클래스 Date 클래스처럼 날짜와 시간을 다루는 클래스이다. java.util 패키지에 포함되어 있다. Calendar 클래스는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완

velog.io

https://www.tcpschool.com/java/java_api_calendar

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

https://java119.tistory.com/52

 

[Java] LocalDate,LocalTime,LocalDateTime 총 정리

아직도!!!!!!!!!!!!!! Calender나 Date를 사용하려는 혹은 사용하고 있는 저 같은분들을 위해 준비한 글입니다. Java 8 부터 java.time(joda.time) api 출시 됐기 때문에, Java version 8 이상만 가능합니다. Java 시간

java119.tistory.com

https://velog.io/@kkatalchae/Java8-Time-API-LocalDate-%EC%A0%95%EB%A6%AC

 

[Java8 Time API] LocalDate 정리

자바에서 시간이나 날짜를 다뤄야하는 일이 있다면 가장 먼저 구글에 자바 현재 시간 과 같은 형식으로 검색을 할 것 같습니다. 그럼 다수의 블로그들이 calendar 클래스나 date 클래스를 사용하여

velog.io

 

'내배캠 > TIL' 카테고리의 다른 글

24. 08. 06  (0) 2024.08.06
Stateless  (0) 2024.08.06
24. 08. 03  (0) 2024.08.04
24. 08. 02  (0) 2024.08.02
24. 08. 01  (0) 2024.08.01