SimpleDateFormat에는 문자열로 형식을 전달하는 생성자가 있는데 아래의 예시를 참고하면 될것.
Date and Time PatternResult
"yyyy.MM.dd G 'at' HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT |
"EEE, MMM d, ''yy" | Wed, Jul 4, '01 |
"h:mm a" | 12:08 PM |
"hh 'o''clock' a, zzzz" | 12 o'clock PM, Pacific Daylight Time |
"K:mm a, z" | 0:08 PM, PDT |
"yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM |
"EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 |
"yyMMddHHmmssZ" | 010704120856-0700 |
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" | 2001-07-04T12:08:56.235-0700 |
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX" | 2001-07-04T12:08:56.235-07:00 |
"YYYY-'W'ww-u" | 2001-W27-3 |
1) SimpleDateFormat와 Date로 현재 시간을 구하는 코드
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd a hh:mm:ss");
Date date=new Date();
System.out.println("now ("+format.format(date)+")");
2) System.currentTimeMillis 메소드를 이용하여 현재 시스템 시간을 구하는 코드
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd a hh:mm:ss");
Date date=new Date(System.currentTimeMillis());
System.out.println("now ("+format.format(date)+")");
3) 반대로 long형태의 millisecond로 반환하는 코드
String str = "2020-01-31 14:20:59";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try{
date = format.parse(str);
}catch(ParseException e){}
long timeMillis = date.getTime();
System.out.println("time millis : "+timeMillis);
위 코드는 2020년 1월 31일 오후 2시 20분 59초를 밀리세컨드로 반환하는데 어떤 시간을 기준으로 반환할까?
아래 코드를 실행해보면 답이 나온다.
String str = "1970-01-01 09:00:00";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try{
date = format.parse(str);
}catch(ParseException e){}
long timeMillis = date.getTime();
System.out.println("time millis : "+timeMillis);
아래와 같이 시간 차이(계산)도 쉽게 구할 수 있다.
final long daySeconds = 86400L;
String str = "1991-09-21 03:00:00";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date birthDay = null;
try{
birthDay = format.parse(str);
}catch(ParseException e){}
long birthDayMillis = birthDay.getTime();
long now = System.currentTimeMillis();
long passed = ((now/1000L) - (birthDayMillis/1000L)) / daySeconds;
System.out.println("개 늙었네 : "+passed);
위의 소스에서 now나 birthdayMillis는 milliseconds단위이므로 1000을 곱하여 시간초로 바꾸고 서로 빼면 지금까지 흐른 초가 나오겠죠? 그걸 또 하루로 나눠버리면 , 아 참고로 하루는 86400초, 지금까지 흐른 일 수가 나오죠?
4) 현재 SimpleDateFormat의 Pattern 알아보기
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("pattern : "+format.toPattern());
반응형
'언어 > JAVA' 카테고리의 다른 글
[Collection] 이것만 알면 해시테이블(Hashtable, Thread-Safe) 정복 가능, 사용법과 자세한 예제 (0) | 2021.03.31 |
---|---|
[Collection] 이것만 알면 해시맵(HashMap) 정복 가능 - HashMap의 특징, 사용법 예제 (2) | 2021.03.29 |
[자바/JAVA] Collections와 ArrayList를 이용한 객체 정렬 (2) | 2020.03.02 |
[자바/JAVA] StringTokenizer를 이용해 문자열을 쪼개보자 (1) | 2020.03.02 |
[자바/JAVA] 쓰레드 동기화 (Thread Synchronization), synchronized (0) | 2019.12.07 |