long형, Date형 시간을 가지고 변환하기
우리가 알고 있는 시간은 10시10분10초 혹은 10:10:10 이렇게 표현이 되지만,
컴퓨터가 알고 있는 시간은 결국 long 타입이다.
실제로 컴퓨터 시간을 찍어보면 1265275107687 처럼 나온다.
(the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC)
여튼 그런데 프로그래밍할 때, 조작해보려면 여간 까다롭지 않다.
그래서 / % 연산자를 써서 C언어 식으로 조작할 수도 있지만,
자바에서는 가뿐하게 API를 사용해서 해결할 수 있다.
public void test() {
long today = System.currentTimeMillis(); // long 형의 현재시간
System.out.println(today);
DateFormat df = new SimpleDateFormat("HH:mm:ss"); // HH=24h, hh=12h
String str = df.format(today);
System.out.println(str);
Date date = new Date(today);
System.out.println(date);
}
currentTimeMillis() 는 아까 얘기했던 컴퓨터의 시간을 long 타입으로 읽어오는 메소드이다.
DateFormat 요 객체로 쉽게 조작이 가능한데, HH는 24시간제로 hh는 12시간제로 표시된다.
그리고 long 타입의 숫자를 Date 객체의 생성자에 넣어주면 자기가 알아서 파싱해준다.
예전에 쓰던 Date.parse() 따위 deprecated 된지 오래다.
위처럼 하면 결과는,
1265275107687
18:18:27
Thu Feb 04 18:18:27 KST 2010
요렇게 나온다.
자바 SimpleDateFormat 정리
yyyy : 년도
w : 일년안에서 몇번째 주인지
W : 한달안에서 몇번째 주인지
MM : 월
dd : 일
D : 일년에서 몇번째 일인지
E : 요일 (ex) Tuesday; Tue
F : 요일을 숫자로 (ex) 2
hh : 시간 ( 12시간 단위로 1-12)
kk : 시간 (12시간 단위로 0-11)
HH : 시간 (24시간 단위로 1-24)
KK : 시간 (24시간 단위로 0-23)
a : PM 인지 AM 인지
mm : 분
ss : 초. second in minute
SSS : Millisecond
zzzz : General time zone (ex) Pacific Standard Time; PST
; GMT-08:00
Z : RFC 822 time zone (ex) -800
Date and Time Pattern | Result |
---|---|
"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 |
* 생성자
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
보통은 위와같이 쓰고
SimpleDateFormat(String pattern, Locale locale)
Constructs a SimpleDateFormat
using the given pattern and the default date format symbols for the given locale.
Locale 넣는것도 있음.
private static final SimpleDateFormat rfc822 = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss z", Locale.US );
'Development > Java' 카테고리의 다른 글
Hotspot JVM의 Garbage Collector (0) | 2012.01.18 |
---|---|
java - RMI (0) | 2012.01.17 |
아스키 코드 (0) | 2011.01.11 |
초보 Java 웹 개발자들을 위한 학습 로드맵 (0) | 2010.12.18 |
안드로이드, 오라클의 임베디드 자바 사업에 위협 (0) | 2010.12.14 |