일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- Strict
- TypeScript
- TS
- ES5
- 0.75px border
- Websocket
- npm
- 전역변수
- 문서번호
- literal
- 컴포넌튼
- entity
- github
- 1px border
- angular
- 서버리스 #
- 10px
- &연산
- es6
- 으
- 데이터베이스 #try #이중
- font-size
- Props
- 당근마켓
- 0.25px border
- jwt
- 0.5px border
- ZOOM
- 클론코딩
- 타입스크립트
- Today
- Total
복잡한뇌구조마냥
[JAVA] 날짜와 시간 ( Date, Calendar, java.time ) 본문
Date 클래스
- JDK 1.0때 만들어짐
- 지역화에 대한 부분이 고려되지 않음
- 대부분 생성자와 메소드가 Deprecated 되어있음
import java.text.SimpleDateFormat;
import java.util.Date;
public class CalendarExam {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
SimpleDateFormat ft = new SimpleDateFormat("yyyy.MM.dd 'at' hh:mm:ss a zzz");
String dateString = ft.format(date);
System.out.println(dateString);
System.out.println(date.getTime());
long today = System.currentTimeMillis();
System.out.println(today);
}
}
- 기본 생성자를 이용해서 Date 클래스를 생성하는 방식으로 사용
- SimpleDateFormat을 이용해서 Date가 출력하는 문자열 형태 변경
- getTime 메소드를 이용해서 타임스탬프를 출력할 수 있음.
- System에서도 currentTimeMillis 메소드를 이용해서 현재시간을 출력할 수 있음.
Format 문자별 패턴
문자 | 날짜 및 시간 요소 | 표시 | 예제 |
G | Era designator | Text | AD |
y | Year | Year | 1996; 96 |
Y | Week year | Year | 2009; 09 |
M | Month in year (context sensitive) | Month | July; Jul; 07 |
L | Month in year (standalone form) | Month | July; Jul; 07 |
w | Week in year | Number | 27 |
W | Week in month | Number | 2 |
D | Day in year | Number | 189 |
d | Day in month | Number | 10 |
F | Day of week in month | Number | 2 |
E | Day name in week | Text | Tuesday; Tue |
u | Day number of week (1 = Monday, ..., 7 = Sunday) | Number | 1 |
a | Am/pm marker | Text | PM |
H | Hour in day (0-23) | Number | 0 |
k | Hour in day (1-24) | Number | 24 |
K | Hour in am/pm (0-11) | Number | 0 |
h | Hour in am/pm (1-12) | Number | 12 |
m | Minute in hour | Number | 30 |
s | Second in minute | Number | 55 |
S | Millisecond | Number | 978 |
z | Time zone | General time zone | Pacific Standard Time; PST; GMT-08:00 |
Z | Time zone | RFC 822 time zone | -0800 |
X | Time zone | ISO 8601 time zone | -08; -0800; -08:00 |
예제 패턴
날짜 및 시간 패턴 | 결과 |
"yyyy.MM.dd G 'at' HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT |
"EEE, MMM d, ''yy" | Wed, Jul 4, '01 |
"h:mm a" | 12:08 PM |
"hh 'o''clock' a, zzzz" | 12 o'clock PM, Pacific Daylight Time |
"K:mm a, z" | 0:08 PM, PDT |
"yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM |
"EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 |
"yyMMddHHmmssZ" | 010704120856-0700 |
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" | 2001-07-04T12:08:56.235-0700 |
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX" | 2001-07-04T12:08:56.235-07:00 |
"YYYY-'W'ww-u" | 2001-W27-3 |
Calendar 클래스
- Date 클래스의 단점인 지역화를 해결하고 등장.
- JDK 1.1때 만들어짐
- 추상클래스임
- 인스턴스 생성시 클래스 메소드 getInstance()를 사용해야하고, 내부적으로 java.util.GregorianCalendar 인스턴스를 생성 리턴
- GregorianCalendar는 Calendar의 자식 클래스임.
- 새로운 형식의 표준달력이 생길 수도 있는 것을 자바가 고려해서 만듬.
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalendarExam {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
System.out.println("Year : "+cal.get(Calendar.YEAR));
// Month는 +1을 해줘야 현재 월을 표시함.
System.out.println("Month : "+cal.get(Calendar.MONTH));
System.out.println("Date : "+cal.get(Calendar.DATE));
// 24시 기준
System.out.println("Hour 24 : "+cal.get(Calendar.HOUR_OF_DAY));
// 오전 오후 기준
System.out.println("Hour 12 : "+cal.get(Calendar.HOUR));
System.out.println("Minute : "+cal.get(Calendar.MINUTE));
System.out.println("Second : "+cal.get(Calendar.SECOND));
System.out.println("Millisecond : "+cal.get(Calendar.MILLISECOND));
cal.add(Calendar.DATE, 10);
System.out.println("Date : "+cal.get(Calendar.DATE));
String dateString = String.format("%d년%d월%d일", cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DATE));
System.out.println(dateString);
}
}
- add 메소드를 통해서 원하는 시간을 만들어서 사용할 수 있음.
java.time 패키지
- java.util.Date가 직관적이지 못함.
- Joda-Time같은 라이브러리로 Date나 Time을 대신할 수 있는 클래스를 사용하기도 함.
- Java SE 8 부터 새롭게 디자인한 Date, Time API 제공
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
public class TimeExam {
public static void main(String[] args) {
LocalDateTime timePoint = LocalDateTime.now();
System.out.println(timePoint);
LocalDate ld1= LocalDate.of(2002, Month.DECEMBER, 22);
System.out.println(ld1);
LocalDate ld2= LocalDate.of(2002, 12, 22);
System.out.println(ld2);
LocalTime lt1 = LocalTime.of(17, 18, 30);
System.out.println(lt1);
LocalTime lt2 = LocalTime.parse("10:15:30");
System.out.println(lt2);
LocalDate ld3 = timePoint.toLocalDate();
System.out.println(ld3);
System.out.println(timePoint.getMonthValue());
Month month = timePoint.getMonth();
System.out.println(month);
System.out.println(month.getValue());
}
}
- Month에 +1을 해주지 않아도 직관적으로 사용할 수 있음.
- getter 메소드를 이용해서 시간정보를 사용하는게 직관적임
참고자료:
https://junghn.tistory.com/entry/JAVA-자바-날짜-포맷-변경-방법SimpleDateFormat-yyyyMMdd
[JAVA] 자바 날짜 포맷 변경 방법(SimpleDateFormat) yyyyMMdd
Date클래스를 이용하여 현재 날짜를 출력하면 영문으로 된 날짜를 리턴한다. 특정 문자열 포맷으로 얻고 싶으면 java.text.SimpleDateFormat 클래스를 이용하면 된다. 다음은 오늘 날짜를 yyyy 년 MM월 dd일
junghn.tistory.com
'BE > JAVA' 카테고리의 다른 글
[JAVA] 어노테이션 (Annotation) (1) | 2025.06.17 |
---|---|
[JAVA] 자바 IO ( Byte 단위, 다양한 타입, Char 단위 입출력) (0) | 2025.06.14 |
[JAVA] 컬렉션 프레임워크 ( 자료구조, Set, List, Map ) (1) | 2025.06.10 |
[JAVA] java.lang + 오토박싱 (1) | 2025.06.09 |
[JAVA] 예외 처리 ( Exception, Throws, 커스텀 Exception ) (1) | 2025.06.07 |