Programming > Java

Java 날짜포멧 ( SimpleDateFormat )

날짜 포멧하기

Date객체를 포멧된 문자열로 변환하기

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");

String str =
format.format(new Date());
System.out.println(str);

포멧문자열을 Date객체로 변환하기

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");

String str = "2016/12/25 23:12:53.234";
Date dt =
format.parse(str);
System.out.println(dt);

문자열에서 바로 java.sql.Date객체로 변환

String str = "2016-12-25";
java.sql.Date dt =
java.sql.Date.valueOf(str);
System.out.println(dt);

 

 

입력 문자열이 정확한 날짜형식인지 체크

예를 들어 2016년 12월 33일은 존재하지 않는다. 포메터에 Lenient(허술한) 를 false를 설정하면 에러, true를 설정하면  2017년 1월2일로 에러가 발생하지 않는다.

SimpleDateFormat formatDate = new SimpleDateFormat("yyyy/MM/dd");
String str = "2016/12/33";

try {
  
 formatDate.setLenient(false);
    Date dt = formatDate.parse(str);
    System.out.println("날짜형식이 맞음 : " + dt);
} catch (Exception e) {
    e.printStackTrace();
    System.out.println("맞지않는 날짜형식 이다.");
}

 

SimpleDateFormat기호별 의미와 사용법

2018년 7월 3일 7시 7분 7초 007미리세컨드 / 화요일 7번째주

기호 의미 사용예
y 년도 yy(18),  yyyy(2018)
M 월 (1~12월) M(7),  MM(07),  MMM(7월)
d 일 (1~31일) d(3),   dd(03),  ddd(003),  dddd(0001)
H 시간 (0~23시) H(7),  HH(07),  HHH(007),  HHHH(0007)
m 분 (0~59분) m(7),  mm(07),  mmm(007),  mmmm(0007)
s 초 (0~59초) s(7),  ss(07),  sss(007),  ssss(0007)
S 미리초 (0~999ms) S(7), SSS(007)
D 년의 일 (1~365일) D(3),  DD(03),  DDD(003), DDDD(0003)  여기는 365일기준
h 시간 (1~12시간) h(7),  hh(07),  hhh(007),  hhhh(0007)  AM/PM구분 12시간제
k 시간 (1~24시간) k(7),  kk(07),   kkk(007),  kkkk(0007)
K 시간 ( 0~11시간) K(7),  KK(07),  KKK(007),  KKKK(0007)
w 년의 주간 (1~53주) w(7),  ww(07),  www(007),  wwww(0007)
W 월의 주간 (1~5주) W(1),  WW(01),  WWW(001),  WWWW(0001)
E 요일 E (화)
F 월의 몇째 요일 (1~5) 1,2...
a 오전/오휴 (AM/PM) 12:00기준 오전 오후
z Time Zone Pacific Standard Time, PST, GMT-08:00
Z Time Zone(RFC822) -0800
G 기원 AD(G)

 

Calendar (캘린더)를 사용한 날짜 설정

1) 문자열을 Date 객체로 만들기

String dt = "2030/12/24 11:21:30";

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, Integer.parseInt(dt.substring(0,4)));
cal.set(Calendar.MONTH,Integer.parseInt(dt.substring(5,7))-1);
cal.set(Calendar.DATE, Integer.parseInt(dt.substring(8,10)));
cal.set(Calendar.HOUR, Integer.parseInt(dt.substring(11,13)));
cal.set(Calendar.MINUTE, Integer.parseInt(dt.substring(14,16)));
cal.set(Calendar.SECOND, Integer.parseInt(dt.substring(17,19)));

Date dt = cal.getTime();
System.out.println(cal.getTime());  >>> Tue Dec 24 11:21:30 KST 2030

System.out.println(cal.getTime().getTime());  >>>> 1924309290495

2) Calendar 객체 => 문자열로 표시

int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int date = cal.get(Calendar.DATE);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);

String yoil = "";
switch (dayOfWeek) {
    case 1:
        yoil = "일";
        break;
    case 2:
        yoil = "월";
        break;
    case 3:
        yoil = "화";
        break;
    case 4:
        yoil = "수";
        break;
    case 5:
        yoil = "목";
        break;
    case 6:
        yoil = "금";
        break;
    case 7:
        yoil = "토";
        break;
}

System.out.println(year+"/"+month+"/"+date+"("+yoil+") "+hour+":"+minute+":"+second);