일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- java
- programmers
- 프로그래머스
- superBuilder
- DevOps
- 해시맵
- Oracle
- 자바
- hibernate
- builder-pattern
- cd
- ORM
- SpringMVC
- JPA
- IntelliJ
- dabase
- 코딩테스트연습
- 알고리즘
- CI/CD
- Vue
- CKA
- CI
- docker
- Spring
- k8s
- Di
- vuejs
- map
- Kubernetes
- 뷰
Archives
- Today
- Total
문홍의 공부장
Java SimpleDateFormat 으로 날짜/시간/요일 표현하기 본문
반응형
SimpleDateFormat 클래스
SimpleDateFormat 클래스는 날짜와 시간을 형식화하여 나타낼 수 있도록 하는 클래스이다. Date, Calendar 클래스만으로는 데이터를 원하는 형태로 다양하게 출력하기엔 다소 복잡한 면이 있다. 하지만 SimpleDateFormat 클래스를 이용하여 간단하게 표현이 가능하다.
기호 | 의미 |
G | 연대(BC, AD) |
y | 년도 |
M | 월 |
w | 년의 몇 번째 주(1~53) |
W | 월의 몇 번째 주(1~5) |
D | 년의 몇 번째 일(!~366) |
d | 월의 몇 번째 일(1~31) |
F | 월의 몇 번째 요일(1~5) |
E | 요일 |
a | 오전/오후 |
H | 시간 (0~23) |
h | 시간 (1~12) |
K | 시간 (0~11) |
k | 시간 (1~24) |
m | 분 (0~59) |
s | 초 (0~59) |
S | 1/1000 초 (0~999) |
z | TimeZone (General time zone) ex) GMT+9:00 |
Z | TimeZone (RFC 822 time zone) ex) +0900 |
Date today = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd E요일");
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat sdf3 = new SimpleDateFormat("a hh:mm:ss");
SimpleDateFormat sdf4 = new SimpleDateFormat("오늘은 올 해의 D번째 날");
SimpleDateFormat sdf5 = new SimpleDateFormat("오늘은 이 달의 d번째 날");
SimpleDateFormat sdf6 = new SimpleDateFormat("오늘은 올 해의 w번째 주");
SimpleDateFormat sdf7 = new SimpleDateFormat("오늘은 이 달의 W번째 주");
SimpleDateFormat sdf8 = new SimpleDateFormat("오늘은 이 달의 F번째 E요일");
출력값:
2020-01-26 일요일
16:31:13
오후 04:31:13
오늘은 올 해의 26번째 날
오늘은 이 달의 26번째 날
오늘은 올 해의 5번째 주
오늘은 이 달의 5번째 주
오늘은 이 달의 4번째 일요일
.format()
메소드는 Date 인스턴스만을 허용하기 때문에, Calendar 클래스를 사용할 경우 Calendar 인스턴스를 Date 인스턴스로 변환 후 사용하여야 한다. (Calendar 클래스의 month는 0부터 시작하는 것을 유념하자)
Calendar cal = Calendar.getInstance();
cal.set(2020, 1, 25);
Date day = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");
.parse()
를 사용하여 데이터의 출력 형식을 변환할 수 있다. 아래는 입력받은 "2020년 1월 26일"이라는 문자열을 Date 객체로 파싱해주는 예제이다.
DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일");
DateFormat df2 = new SimpleDateFormat("yyyy/MM/DD E요일");
try {
Date day = df.parse("2020년 1월 26일");
System.out.println(df2.format(day));
} catch (ParseException e) {
e.printStackTrace();
}
반응형