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 |