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
}
}
댓글