ㅤㅤㅤ
SimpleDateFormat 기본 자료 본문
String -> Date 타입
DateFormat sdFormat = new SimpleDateFormat("yyyyMMdd");
Date tempDate = sdFormat.parse("20100222");
주의할 점..
" " 내부에 들어가는 내용대로 String 데이터가 입력되어 있어야 파싱이 된다.
Date -> String 타입
DateFormat sdFormat = new SimpleDateFormat("yyyyMMdd");
Date nowDate = new Date();
String tempDate = sdFormat.format(nowDate);
출처: http://sdw8001.tistory.com/130 [훈트이야기]
SimpleDateFormat format = new java.text.SimpleDateFormat("yyyyMMdd");
String today = format.format(new Date());
today -> 20151015 가 출력 된다.
yyyy : 년
MM ; 월
dd ; 일
HH : 시
mm : 분
ss : 초
출처: http://3210559.tistory.com/16 [잡학다식]
String dateConvertBefore = "yyyy/MM/dd";
Date date = new SimpleDateFormat("yyyy/MM/dd").parse(dateConvertBefore);
convertCsv[0] = new SimpleDateFormat("yyyy-MM-dd").format(date);
DateFormat format1 = DateFormat.getDateInstance(DateFormat.FULL);
System.out.println(format1.format(now));
DateFormat format2 = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(format2.format(now));
DateFormat format3 = DateFormat.getDateInstance(DateFormat.MEDIUM);
System.out.println(format3.format(now));
DateFormat format4 = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(format4.format(now));
결과는 아래처럼..
2009년 5월 29일 (금)
2009. 5. 29
09. 5. 29
자.. 그럼 내가 원하는 날짜표현을 쓸 수 있는 방법을 찾아보자. 다으밍(Google은 Googling이니깐 Daum은 Dauming인겨?? =ㅅ=a)을 했다. 워낙 많이 찾는 내용이라 잘 나온다. ㅋㅋ
패턴을 사용하는 방법 중 간단한 방법은 을 사용하는 방법이다. SimpleDateFormat은 DateFormat을 상속받아 사용하기 편하게 이쁘게 되어 있다. 이 클래스를 사용하면 우리가 자주 사용하는 "yyyyMMdd"와 같은 표현을 사용할 수 있다.
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
System.out.println(format.format(now)); // 20090529
format = new SimpleDateFormat("E MMM dd HH:mm:ss", Locale.UK);
System.out.println(format.format(now)); // Fri May 29 11:06:29
패턴 사용법은 누구나 아니까 패스~~하고, 패턴 구문만 살짝.. 튜토리얼에서도 사용법을 알 수 있다.
Letter | Date or Time Component | Presentation | Examples |
---|---|---|---|
G | Era designator | Text | AD |
y | Year | Year | 1996 ; 96 |
M | Month in year | Month | July ; Jul ; 07 |
w | Week in year | Number | 27 |
W | Week in month | Number | 2 |
D | Day in year | Number | 189 |
d | Day in month | Number | 10 |
F | Day of week in month | Number | 2 |
E | Day in week | Text | Tuesday ; Tue |
a | Am/pm marker | Text | PM |
H | Hour in day (0-23) | Number | 0 |
k | Hour in day (1-24) | Number | 24 |
K | Hour in am/pm (0-11) | Number | 0 |
h | Hour in am/pm (1-12) | Number | 12 |
m | Minute in hour | Number | 30 |
s | Second in minute | Number | 55 |
S | Millisecond | Number | 978 |
z | Time zone | General time zone | Pacific Standard Time ; PST ; GMT-08:00 |
Z | Time zone | RFC 822 time zone | -0800 |
그리고 아래의 간단한 예제는 API문서에서..
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 클래스와 위험성
JAVA 1.5에서는 Formatter 클래스를 지원하면서, 다양한 확장된 Format 클래스들이 나왔다.
이중에서 가장 많이 Formatting이 필요한게 날짜 관련인데, 이는 앞에 Formatter 클래스에서 설명을 했다.
[JAVA] Formatter 클래스 format(), 날짜 format()
하지만 SimpleDateFormat 클래스라는 좀 더 쉽게 날짜 Formatting이 가능한 클래스가 있다.
또한 format의 대상으로 Date() 클래스와 Calendar 클래스를 모두 사용할 수 있다.
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class FormatterTest { public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일 hh시 mm분 ss초"); Date date = new Date(); String today = df.format(date); System.out.println(today); Calendar c = Calendar.getInstance(); String today2 = df.format(c.getTime()); System.out.println(today2); } } |
- SimpleDateFormat 으로 날짜 데이터 포맷 형식을 "yyyy년 MM월 dd일 hh시 mm분 ss초" 로 지정하였다.
- Date() 클래스와 Calendar 클래스를 SimpleDateFormat 에 format()으로 포매팅 하면 현재 날짜 시간으로 지정한 포맷으로 데이터를 변환한다.
* 날짜 symbol
ex> 현재 일자 : 2014년 01월 01일 13시 20분 10초
Symbol | 설명 | 사용 예 |
y | year : 년도 | yy : 14 , yyyy : 2014 |
M | month in year : 월 | M : 1, MM : 01, MMM : 1월 |
d | day in month : 일 | d : 1, dd : 01, ddd : 001, dddd : 0001 |
h | hour in am/pm(1-12) : 시 | h : 1 , hh : 01, hhh : 001, hhhh : 0001 |
a | am/pm marker | a : 오후 (AM/PM 으로 표시하려면 format에서 Locale.US를 지정) |
k | hour in day (1-24) : 시 | k : 13, kk : 13, kkk : 013, kkkk : 0013 |
m | minute in hour : 분 | m : 20, mm: 20, mmm : 020, mmmm : 0020 |
s | second in minute : 초 | s : 10, ss : 10, sss : 010. ssss: 0010 |
w | week in year : 주(년기준) | w : 1, ww : 01, www :001, wwww : 0001 |
D | day in year : 일(년기준) | D : 1, DD : 01, DDD: 001, DDDD : 0001 |
E | day of week : 요일 | E : 수 |
F | day of week in month : 월 기준 주간 요일 순번 | F : 1, FF : 01, FFF:001, FFFF:0001 |
G | era designator : 시대 | AD |
H | hour in day (0-23) : 시 | H: 13, HH : 13, HHH : 013 , HHHH:0013 |
K | hour in am/pm(0-11) : 시 | K: 1 , KK : 01, KKK :001, KKKK: 0001 |
S | fractional seconds : 초 | S : 402 |
W | week in month : 주 (월기준) | W : 1, WW : 01, WWW : 001, WWWW : 0001 |
z | time zone | z : KST, zzzz: 한국표준시 |
Z | time zone (RFC 822) | Z : +0900 |
위의 날짜 Symbol을 사용하여 원하는 날짜 형식으로 출력할 수 있다.
* SimpleDateFormat 클래스의 위험성
멀티 쓰레드의 부하가 많이 걸리는 부분에서 SimpleDateFormat을 사용하면 java.lang.ArrayIndexOutOfBoundsException 에러가 종종 발생한다.
SimpleDateFormat은 Thread-safe 하지 못하기 때문에 발생하는 문제이다.
따라서 멀티 쓰레드를 사용하는 부하가 많은 시스템에서는 SimpleDateFormat을 사용할 때 주의해야 한다.
이를 보완해서 Joda-Time 이라는 라이브러리 또는 apache의 common에 FastDateTime 이라는 라이브러리가 있다고 한다.
이 라이브러리들은 Thread-Safe 하며 속도도 빠르다고 하니, SimpleDateTime 보다는 이것들을 사용하는 것이 좋다.
이 대체 라이브러리들에 대해서는 SimpleDateTime 과 비교하여 추후에 테스트 해봐야 겠다.
출처: http://hyeonstorage.tistory.com/232 [개발이 하고 싶어요]
'プログラミング > JAVA' 카테고리의 다른 글
String을 받아서 문자인지 숫자인지 구별하는 방법 (0) | 2017.06.07 |
---|---|
강제로 Exception 발생시키는 방법 (0) | 2017.06.07 |
이클립스에서 클래스다이어그램 만들기(ObjectAid) (0) | 2017.06.07 |
JAVA 디버깅 튜토리얼 (0) | 2017.06.07 |
Java 8 Tutorials (0) | 2017.06.07 |