자바에서 현재 시각이나 어떤 시각을 특정 형식으로 맞추어 출력하거나, String으로 변환해야할 때가 있다.
이럴 때 SimpleDateFormat이 사용되는데, 선언은 다음과 같이 하면 된다.
1. 표현식
SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy.MM.dd a H:mm:ss");
여기에서 Locale 설정을 할 수 있는데, 지역 설정을 바꾸어 (DEFAULT) AM/PM을 오전/오후로 바꿀 수 있다.
SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy.MM.dd a H:mm:ss", Locale.KOREA);
선언문의 Argument에 사용하는 태그는 종류별로 다음과 같다.
Symbol | 뜻 | 예시(/로 구분) |
y | 년도 | 2019, 19 |
M | 월(1~12) | 4, 4월, APR |
D/d | 일(1~366/1~31) | 139/24, 24일 |
H/h | 시간(0~23/1~12) | 19/12 |
K/k | 시간(1~24/0~11) | 23/5 |
m | 분(0~59) | 23 |
s/S | 초(0~59)/밀리초(0~999) | 42/877 |
z | Time Zone | GMT+9:00 |
E | 요일 | 화, 목 |
w/W | 연중 주/월중 주 | 44/3 |
a | 오전/오후 | 오전, AM/오후, PM |
개인적으로 많이 쓰게 되는 것은 BOLD를 넣었다.
모든 symbol은 개수에 따라 자릿수가 맞춰진다(아마도?)
예를 들어, yyyy가 2019를 나타내면 yy는 19만 나타내게 된다.
그리고 4월 같은 한자리 수의 경우 M은 4, MM은 04로 표시된다.
2. String/Date/Calendar/Long Format으로 상호 변환
설명하기 쉽게 예를 들겠다.
String str = "20190923-09:29";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-h:mm");
long milliSec = 150923..(생략);
Date d = new Date();
Calendar cal = Calendar.getInstance();
변환하려는 문자열은 무조건 변환할 때에 사용하는 SimpleDateFormat과 형식이 일치해야한다.
2-1. String -> (SimpleDateFormat) -> Date
d = sdf.parse(str);
매우 간단하다.
2-2. Date -> (SimpleDateFormat) -> String
d = new Date(); //알아서 설정
str = sdf.format(d);
2-3. Date -> Calendar
cal.setTime(d);
2-4. Calendar -> Date
d = new Date(cal.getTimeInMillis());
add. String <-> Calendar
String과 Calendar의 상호 변환은 Date를 매개로 해서 하면 되는데,
cal.setTime(sdf.parse(str));
이런 식이다.
'JAVA' 카테고리의 다른 글
JAVA String, StringBuilder, StringBuffer 의 차이점 (0) | 2019.11.09 |
---|---|
JAVA 객체 복사 방식 (깊은 복사 vs 얕은 복사) (0) | 2019.10.23 |
JAVA에서 특정 폴더의 파일/디렉터리 모두 가져오기 (0) | 2019.10.09 |
JAVA 프로젝트 폴더에서 이미지 BufferedImage로 불러오기 (0) | 2019.10.09 |