public class SimpleDateFormat
extends DateFormat
java.lang.Object | |||
↳ | java.text.Format | ||
↳ | java.text.DateFormat | ||
↳ | java.text.SimpleDateFormat |
SimpleDateFormat
是用于以区域敏感的方式格式化和解析日期的具体类。 它允许格式化(日期 - >文本),解析(文本 - >日期)和规范化。
SimpleDateFormat
允许您首先选择任何用户定义的日期时间格式模式。 不过,建议您创建一个日期-时间格式有两种getTimeInstance
, getDateInstance
,或getDateTimeInstance
在DateFormat
。 这些类方法中的每一个都可以返回使用默认格式模式初始化的日期/时间格式化程序。 您可以根据需要使用applyPattern
方法修改格式模式。 有关使用这些方法的更多信息,请参阅DateFormat
。
日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,从'A'
到'Z'
和从'a'
到'z'
未加引号的字母被解释为表示日期或时间字符串的组成部分的模式字母。 可以使用单引号( '
)引用文本以避免解释。 "''"
代表一个单引号。 所有其他字符不解释; 它们只是在格式化时被复制到输出字符串中,或者在解析过程中与输入字符串匹配。
定义了以下模式字母(保留从 'A'
到 'Z'
和从 'a'
到 'z'
所有其他字符):
Pattern letters are usually repeated, as their number determines the exact presentation:
Letter Date or Time Component Presentation Examples G
Era designator Text AD
y
Year Year 1996
;96
Y
Week year Year 2009
;09
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 name in week Text Tuesday
;Tue
u
Day number of week (1 = Monday, ..., 7 = Sunday) Number 1
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
X
Time zone ISO 8601 time zone -08
;-0800
;-08:00
Calendar
is the Gregorian calendar, the following rules are applied.SimpleDateFormat
must interpret the abbreviated year relative to some century. It does this by adjusting dates to be within 80 years before and 20 years after the time the SimpleDateFormat
instance is created. For example, using a pattern of "MM/dd/yy" and a SimpleDateFormat
instance created on Jan 1, 1997, the string "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64" would be interpreted as May 4, 1964. During parsing, only strings consisting of exactly two digits, as defined by isDigit(char)
, will be parsed into the default century. Any other numeric string, such as a one digit string, a three or more digit string, or a two digit string that isn't all digits (for example, "-1"), is interpreted literally. So "01/02/3" or "01/02/003" are parsed, using the same pattern, as Jan 2, 3 AD. Likewise, "01/02/-3" is parsed as Jan 2, 4 BC. 'Y'
is specified and the calendar doesn't support any week years, the calendar year ('y'
) is used instead. The support of week years can be tested with a call to getCalendar()
.isWeekDateSupported()
.GMTOffsetTimeZone:Hours must be between 0 and 23, and Minutes must be between 00 and 59. The format is locale independent and digits must be taken from the Basic Latin block of the Unicode standard.GMT
Sign Hours:
Minutes Sign: one of+ -
Hours: Digit Digit Digit Minutes: Digit Digit Digit: one of0 1 2 3 4 5 6 7 8 9
对于解析, RFC 822 time zones也被接受。
RFC822TimeZone: Sign TwoDigitHours Minutes TwoDigitHours: Digit DigitTwoDigitHours must be between 00 and 23. Other definitions are as for general time zones.
为了解析,也接受 general time zones 。
ISO8601TimeZone: OneLetterISO8601TimeZone TwoLetterISO8601TimeZone ThreeLetterISO8601TimeZone OneLetterISO8601TimeZone: Sign TwoDigitHoursOther definitions are as for general time zones or RFC 822 time zones.Z
TwoLetterISO8601TimeZone: Sign TwoDigitHours MinutesZ
ThreeLetterISO8601TimeZone: Sign TwoDigitHours:
MinutesZ
格式化时,如果GMT的偏移量值为0,则生成"Z"
。 如果模式字母的数量是1,则忽略一小时的任何一小部分。 例如,如果模式为"X"
,时区为"GMT+05:30"
,则生成"+05"
。
为了解析, "Z"
被解析为UTC时区指示符。 不接受General time zones 。
如果模式字母的数目是4或更多, IllegalArgumentException
被构建时抛出 SimpleDateFormat
或 applying a pattern 。
SimpleDateFormat
also supports
localized date and time pattern strings. In these strings, the pattern letters described above may be replaced with other, locale dependent, pattern letters.
SimpleDateFormat
does not deal with the localization of text other than the pattern letters; that's up to the client of the class.
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
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
2001-07-04T12:08:56.235-07:00
"YYYY-'W'ww-u"
2001-W27-3
日期格式不同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问一个格式,它必须在外部同步。
Inherited constants |
---|
From class java.text.DateFormat
|
Inherited fields |
---|
From class java.text.DateFormat
|
Public constructors |
|
---|---|
SimpleDateFormat() 使用默认语言环境的默认模式和日期格式符号构造 |
|
SimpleDateFormat(String pattern) 使用默认语言环境的给定模式和默认日期格式符号构造 |
|
SimpleDateFormat(String pattern, Locale locale) 使用给定的模式和给定语言环境的默认日期格式符号构造一个 |
|
SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols) 使用给定的模式和日期格式符号构造 |
Public methods |
|
---|---|
void |
applyLocalizedPattern(String pattern) 将给定的本地化模式字符串应用于此日期格式。 |
void |
applyPattern(String pattern) 将给定的模式字符串应用于此日期格式。 |
Object |
clone() 创建此 |
boolean |
equals(Object obj) 将给定的对象与这个 |
StringBuffer |
format(Date date, StringBuffer toAppendTo, FieldPosition pos) 将给定的 |
AttributedCharacterIterator |
formatToCharacterIterator(Object obj) 格式化产生 |
Date |
get2DigitYearStart() 返回100年期间的两位数年份的开始日期被解释为在之内。 |
DateFormatSymbols |
getDateFormatSymbols() 获取此日期格式的日期和时间格式符号的副本。 |
int |
hashCode() 返回此 |
Date |
parse(String text, ParsePosition pos) 解析字符串中的文本以生成 |
void |
set2DigitYearStart(Date startDate) 设置100年期间的两位数年份将被解释为在用户指定的日期开始。 |
void |
setDateFormatSymbols(DateFormatSymbols newFormatSymbols) 设置此日期格式的日期和时间格式符号。 |
String |
toLocalizedPattern() 返回描述此日期格式的本地化模式字符串。 |
String |
toPattern() 返回描述此日期格式的模式字符串。 |
Inherited methods |
|
---|---|
From class java.text.DateFormat
|
|
From class java.text.Format
|
|
From class java.lang.Object
|
SimpleDateFormat ()
使用默认语言环境的默认模式和日期格式符号构造SimpleDateFormat
。 注意:此构造函数可能不支持所有语言环境。 要获得全面覆盖,请使用DateFormat
课程中的工厂方法。
SimpleDateFormat (String pattern)
构造SimpleDateFormat
使用给定的模式和缺省语言环境的默认日期格式符号。 注意:此构造函数可能不支持所有语言环境。 要获得全面覆盖,请使用DateFormat
类中的工厂方法。
Parameters | |
---|---|
pattern |
String : the pattern describing the date and time format |
Throws | |
---|---|
NullPointerException |
if the given pattern is null |
IllegalArgumentException |
if the given pattern is invalid |
SimpleDateFormat (String pattern, Locale locale)
使用给定的模式和给定语言环境的默认日期格式符号构造SimpleDateFormat
。 注意:此构造函数可能不支持所有语言环境。 要获得全面覆盖,请使用DateFormat
课程中的工厂方法。
Parameters | |
---|---|
pattern |
String : the pattern describing the date and time format |
locale |
Locale : the locale whose date format symbols should be used |
Throws | |
---|---|
NullPointerException |
if the given pattern or locale is null |
IllegalArgumentException |
if the given pattern is invalid |
SimpleDateFormat (String pattern, DateFormatSymbols formatSymbols)
使用给定的模式和日期格式符号构造 SimpleDateFormat
。
Parameters | |
---|---|
pattern |
String : the pattern describing the date and time format |
formatSymbols |
DateFormatSymbols : the date format symbols to be used for formatting |
Throws | |
---|---|
NullPointerException |
if the given pattern or formatSymbols is null |
IllegalArgumentException |
if the given pattern is invalid |
void applyLocalizedPattern (String pattern)
将给定的本地化模式字符串应用于此日期格式。
Parameters | |
---|---|
pattern |
String : a String to be mapped to the new date and time format pattern for this format |
Throws | |
---|---|
NullPointerException |
if the given pattern is null |
IllegalArgumentException |
if the given pattern is invalid |
void applyPattern (String pattern)
将给定的模式字符串应用于此日期格式。
Parameters | |
---|---|
pattern |
String : the new date and time pattern for this date format |
Throws | |
---|---|
NullPointerException |
if the given pattern is null |
IllegalArgumentException |
if the given pattern is invalid |
Object clone ()
创建此SimpleDateFormat
的副本。 这也克隆格式的日期格式符号。
Returns | |
---|---|
Object |
a clone of this SimpleDateFormat |
boolean equals (Object obj)
将给定的对象与这个 SimpleDateFormat
比较。
Parameters | |
---|---|
obj |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if the given object is equal to this SimpleDateFormat |
StringBuffer format (Date date, StringBuffer toAppendTo, FieldPosition pos)
将给定的 Date
为日期/时间字符串,并将结果追加到给定的 StringBuffer
。
Parameters | |
---|---|
date |
Date : the date-time value to be formatted into a date-time string. |
toAppendTo |
StringBuffer : where the new date-time text is to be appended. |
pos |
FieldPosition : the formatting position. On input: an alignment field, if desired. On output: the offsets of the alignment field. |
Returns | |
---|---|
StringBuffer |
the formatted date-time string. |
Throws | |
---|---|
NullPointerException |
if the given date is null . |
AttributedCharacterIterator formatToCharacterIterator (Object obj)
格式化产生AttributedCharacterIterator
的对象。 您可以使用返回的AttributedCharacterIterator
来生成结果字符串,以及确定有关生成的字符串的信息。
AttributedCharacterIterator的每个属性键都是类型 DateFormat.Field
,相应的属性值与属性键相同。
Parameters | |
---|---|
obj |
Object : The object to format |
Returns | |
---|---|
AttributedCharacterIterator |
AttributedCharacterIterator describing the formatted value. |
Throws | |
---|---|
NullPointerException |
if obj is null. |
IllegalArgumentException |
if the Format cannot format the given object, or if the Format's pattern string is invalid. |
Date get2DigitYearStart ()
返回100年期间的两位数年份的开始日期被解释为在之内。
Returns | |
---|---|
Date |
the start of the 100-year period into which two digit years are parsed |
也可以看看:
DateFormatSymbols getDateFormatSymbols ()
获取此日期格式的日期和时间格式符号的副本。
Returns | |
---|---|
DateFormatSymbols |
the date and time format symbols of this date format |
int hashCode ()
返回此 SimpleDateFormat
对象的哈希码值。
Returns | |
---|---|
int |
the hash code value for this SimpleDateFormat object. |
Date parse (String text, ParsePosition pos)
分析字符串中的文本以生成 Date
。
该方法尝试解析从pos
给出的索引开始的文本。 如果解析成功,则在使用最后一个字符(解析不一定使用到字符串末尾的所有字符)之后,索引pos
会更新为索引,并返回解析的日期。 更新的pos
可用于指示下次调用此方法的起点。 如果发生错误,则pos
的索引不会更改,错误索引pos
将设置为发生错误的字符的索引,并返回null。
此解析操作使用calendar
生成Date
。 所有的calendar
的日期时间字段cleared解析之前,与calendar
“被用于任何丢失的日期时间信息S日期时间字段的默认值。 例如,解析Date
的年份值是1970年,如果解析操作没有给出年份值,则年份值为GregorianCalendar
。 TimeZone
值可能会被覆盖,具体取决于给定模式和text
的时区值。 可能需要恢复以前通过调用setTimeZone
设置的任何TimeZone
值才能进一步操作。
Parameters | |
---|---|
text |
String : A String , part of which should be parsed. |
pos |
ParsePosition : A ParsePosition object with index and error index information as described above. |
Returns | |
---|---|
Date |
A Date parsed from the string. In case of error, returns null. |
Throws | |
---|---|
NullPointerException |
if text or pos is null. |
void set2DigitYearStart (Date startDate)
设置100年期间的两位数年份将被解释为在用户指定的日期开始。
Parameters | |
---|---|
startDate |
Date : During parsing, two digit years will be placed in the range startDate to startDate + 100 years . |
也可以看看:
void setDateFormatSymbols (DateFormatSymbols newFormatSymbols)
设置此日期格式的日期和时间格式符号。
Parameters | |
---|---|
newFormatSymbols |
DateFormatSymbols : the new date and time format symbols |
Throws | |
---|---|
NullPointerException |
if the given newFormatSymbols is null |
也可以看看:
String toLocalizedPattern ()
返回描述此日期格式的本地化模式字符串。
Returns | |
---|---|
String |
a localized pattern string describing this date format. |
String toPattern ()
返回描述此日期格式的模式字符串。
Returns | |
---|---|
String |
a pattern string describing this date format. |