SimpleDateFormat은 시간 형식 문제를 해결하는 클래스입니다.
SimpleDateFormat은 로케일에 따른 방식으로 날짜 형식을 지정하고 구문 분석하기 위한 구체적인 클래스입니다. 서식 지정(날짜->텍스트), 구문 분석(텍스트->날짜) 및 정규화가 가능합니다. SimpleDateFormat을 사용하면 사용자 정의 날짜-시간 형식 패턴을 선택할 수 있습니다.
날짜 및 시간 패턴 날짜 및 시간 형식은 날짜 및 시간 패턴 문자열로 지정됩니다. 날짜 및 시간 패턴 문자열에서 따옴표가 없는 문자 'A' - 'Z' 및 'a' - 'z'는 패턴 문자로 해석되며 날짜 또는 시간 문자열 요소를 나타내는 데 사용됩니다. 해석을 피하기 위해 텍스트를 작은따옴표(')로 묶을 수 있습니다. "''"는 작은따옴표를 나타냅니다. 다른 모든 문자는 해석되지 않습니다. 형식 지정 중에 출력 문자열에 복사되거나 구문 분석 중에 입력 문자열과 일치됩니다.
다음 패턴 문자가 정의됩니다(다른 모든 문자 'A'~'Z' 및 'a'~'z'는 예약되어 있음).
문자 날짜 또는 시간 요소 표현 예
G 시대 식별자 텍스트 광고
연도 1996년;
M 월 7월;
w 연도의 주 수 숫자 27
W 월의 주 수 숫자 2
D 일년의 일수 숫자 189
d 월의 일수 숫자 10
F 월의 주 번호 2
E 요일 텍스트 화요일;
a 오전/오후 마커 텍스트 PM
H 시간(0-23) 숫자 0
k 하루 중 시간(1-24) 숫자 24
K am/pm 단위의 시간(0-11) 숫자 0
h 시간(am/pm)(1-12) 숫자 12
m 한 시간의 분 수 숫자 30
s 초(분) 숫자 55
S 밀리초 숫자 숫자 978
z 시간대 일반 시간대 태평양 표준시(GMT-08:00);
Z 시간대 RFC 822 시간대 -0800
다음 예에서는 미국 로케일의 날짜 및 시간 패턴을 해석하는 방법을 보여줍니다. 주어진 날짜와 시간은 미국 태평양 시간대의 현지 시간 2001-07-04 12:08:56 입니다.
날짜 및 시간 패턴 결과
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD 12:08:56 PDT
"EEE, MMM d, ''yy" '01년 7월 4일 수요일
"h:mm a" 오후 12:08
"hh 'o''clock' a, zzzz" 오후 12시, 태평양 일광절약시간
"K:mm a, z" 오후 0시 8분(PDT)
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" 2001년 7월 4일 수요일 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
프로그래밍에서 SimpleDateFormat의 실제 적용 예:
(1) 서식 지정(날짜->텍스트)
일반적으로 중국어에서 일반적으로 사용되는 날짜와 시간은 다음과 같습니다: 20070719 20:29:30
SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd hh:mm:ss");
System.out.println("날짜를 문자열로 "+formater.format(new Date()));
유사한 일반적인 형식에는 yyMMdd hh:mm:ss yyyy-MM-dd hh:mm:ss dd-MM-yyyy hh:mm:ss가 포함됩니다.
그러나 이 형식(19JUL07)과 이와 유사한 형식에는 약간의 트릭이 있다는 점은 주목할 가치가 있습니다.
SimpleDateFormat 포맷터 = new SimpleDateFormat("ddMMMyy",,new Locale("US"))
System.out.println("날짜를 문자열로 "+formater.format(new Date()).toUpperCase());
영어이므로 Locale 객체 매개변수를 사용해야 하며, 그렇지 않으면 기본 로컬 Locale이 사용됩니다.
(2) 분석(텍스트->날짜)
일반적으로 원하는 형식의 시간을 가져오려는 날짜 및 시간 모드와 텍스트 매개변수의 형식을 사용할 수 있습니다. 예를 들어, 2007-7-19는 java.util.Date 유형 시간 객체를 반환하고 시간을 반환합니다. , 분, 초는 0으로 채워집니다.
formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
노력하다...{
System.out.println("현재 문자열 "+formater.parse("2007sep01"));
} catch (ParseException e) ...{
e.printStackTrace();
}
특히,
formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
노력하다...{
System.out.println("현재 문자열 "+formater.parse("2007sep01"));
} catch (ParseException e) ...{
e.printStackTrace();
}
또한 시간, 분, 초가 0으로 채워진 java.util.Date 유형의 날짜 객체를 반환합니다.
(3) 텍스트 -> 타임스탬프, 날짜 -> 타임스탬프
타임스탬프 t;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
노력하다...{
t = new Timestamp(format.parse("2007-07-19 00:00:00").getTime());
} catch (ParseException e) ...{
e.printStackTrace();
}
타임스탬프 t;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
t = 새로운 타임스탬프(new Date().getTime