01. [자바] Calendar & Date
Calendar와 GregorianCalendar Calendar는 추상클래스이기 때문에 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다. Calendar cal = new Calendar(); // 추상클래스는 인스턴스를 생성할 수 없다...
staticclass.tistory.com
SimpleDateFormat클래스?
SimpleDateFormat 클래스는 Date와 Calendar의 날짜 데이터를 다양한 형태로 편하게 출력하기 위한 클래스이다, 만약 Date와 Calendar에 대해 궁금하다면 위 링크를 보시면 된다.
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(df.format(today)); // 2020-12-30
기호 | 의미 | 보기 |
G | 연대(BC, AD) | AD |
y | 년도 | 2006 |
M | 월(1~12 또는 1월~12월) | 10 또는 10월, OCT |
w | 년의 몇 번째 주(1~53) | 50 |
W | 월의 몇 번째 주(1~5) | 4 |
D | 년의 몇 번째 일(1~366) | 100 |
d | 월의 몇 번째 일(1~31) | 15 |
F | 월의 몇 번째 요일(1~5) | 1 |
E | 요일 | 월 |
a | 오전/오후(AM,PM) | PM |
H | 시간(0~23) | 20 |
k | 시간(1~24) | 13 |
K | 시간(0~11) | 10 |
h | 시간(1~12) | 11 |
m | 분(0~59) | 35 |
s | 초(0~59) | 55 |
S | 천분의 일초(0~999) | 253 |
z | Time zone(General time zone) | GMT+9:00 |
Z | Time zone(RFC 822 time zone) | +0900 |
' | escape문자(특수문자를 표현하는데 사용) | 없음 |
SimpleDateFormat 사용해보기
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatExample {
public static void main(String[] args) {
// Calendar클래스를 Date클래스로 바꾸려면 참조변수.getTime() 시 반환 타입이 Date이다.
// Calendar cal = Calendar.getInstance();
// Date day = cal.getTime();
Date today = new Date();
System.out.println(today);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf1.format(today)); // 결과 : 2020-12-30
SimpleDateFormat sdf2 = new SimpleDateFormat("''yy년 MM월 dd일 E요일''");
System.out.println(sdf2.format(today)); // 결과 : '20년 12월 30일 수요일'
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy년 MM월 dd일 E요일 HH:mm:ss.SSS");
System.out.println(sdf3.format(today)); // 결과 : 2020년 12월 30일 수요일 03:28:23.359
SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
System.out.println(sdf4.format(today)); // 결과 : 2020-12-30 03:28:23 오전
SimpleDateFormat sdf5 = new SimpleDateFormat("올해 D번째 날입니다.");
System.out.println(sdf5.format(today)); // 결과 : 올해 365번째 날입니다.
SimpleDateFormat sdf6 = new SimpleDateFormat("이 달의 d번째 날입니다.");
System.out.println(sdf6.format(today)); // 결과 : 이 달의 30번째 날입니다.
}
}
문자열을 날짜와 시간으로 파싱하기
문자열을 날짜와 시간으로 파싱하는 것도 가능하다.
대신 스트링의 패턴에 맞게 파싱 해주어야 한다.
예를 들면 2020-12-30
의 문자열은 yyyy-MM-dd
로 패턴을 맞추어서 파싱 해주어야
기대하는 값을 반환 받을 수 있다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateParsing {
public static void main(String[] args) throws ParseException {
Date today = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf1.format(today); // 2020-12-30
Date parsDay = sdf1.parse(str);
System.out.println(parsDay); // 결과 : Wed Dec 30 00:00:00 KST 2020
}
}
댓글