| com.ibm.icu.text.UFormat com.ibm.icu.text.DateFormat com.ibm.icu.text.SimpleDateFormat
All known Subclasses: com.ibm.icu.text.ChineseDateFormat,
SimpleDateFormat | public class SimpleDateFormat extends DateFormat (Code) | | SimpleDateFormat is a concrete class for formatting and
parsing dates in a locale-sensitive manner. It allows for formatting
(date -> text), parsing (text -> date), and normalization.
SimpleDateFormat allows you to start by choosing
any user-defined patterns for date-time formatting. However, you
are encouraged to create a date-time formatter with either
getTimeInstance , getDateInstance , or
getDateTimeInstance in DateFormat . Each
of these class methods can return a date/time formatter initialized
with a default format pattern. You may modify the format pattern
using the applyPattern methods as desired.
For more information on using these methods, see
DateFormat .
Time Format Syntax:
To specify the time format use a time pattern string.
In this pattern, all ASCII letters are reserved as pattern letters,
which are defined as the following:
Symbol Meaning Presentation Example
------ ------- ------------ -------
G era designator (Text) AD
y† year (Number) 1996
Y* year (week of year) (Number) 1997
u* extended year (Number) 4601
M month in year (Text & Number) July & 07
d day in month (Number) 10
h hour in am/pm (1~12) (Number) 12
H hour in day (0~23) (Number) 0
m minute in hour (Number) 30
s second in minute (Number) 55
S fractional second (Number) 978
E day of week (Text) Tuesday
e* day of week (local 1~7) (Number) 2
D day in year (Number) 189
F day of week in month (Number) 2 (2nd Wed in July)
w week in year (Number) 27
W week in month (Number) 2
a am/pm marker (Text) PM
k hour in day (1~24) (Number) 24
K hour in am/pm (0~11) (Number) 0
z time zone (Text) Pacific Standard Time
Z time zone (RFC 822) (Number) -0800
v time zone (generic) (Text) Pacific Time
g* Julian day (Number) 2451334
A* milliseconds in day (Number) 69540000
' escape for text (Delimiter) 'Date='
'' single quote (Literal) 'o''clock'
* These items are not supported by Java's SimpleDateFormat.
† ICU interprets a single 'y' differently than Java.
The count of pattern letters determine the format.
(Text): 4 or more pattern letters--use full form,
< 4--use short or abbreviated form if one exists.
(Number): the minimum number of digits. Shorter
numbers are zero-padded to this amount. Year is handled specially;
that is, if the count of 'y' is 2, the Year will be truncated to 2 digits.
(e.g., if "yyyy" produces "1997", "yy" produces "97".)
Unlike other fields, fractional seconds are padded on the right with zero.
(Text & Number): 3 or over, use text, otherwise use number.
Any characters in the pattern that are not in the ranges of ['a'..'z']
and ['A'..'Z'] will be treated as quoted text. For instance, characters
like ':', '.', ' ', '#' and '@' will appear in the resulting time text
even they are not embraced within single quotes.
A pattern containing any invalid pattern letter will result in a thrown
exception during formatting or parsing.
Examples Using the US Locale:
Format Pattern Result
-------------- -------
"yyyy.MM.dd G 'at' HH:mm:ss vvvv" ->> 1996.07.10 AD at 15:08:56 Pacific Time
"EEE, MMM d, ''yy" ->> Wed, July 10, '96
"h:mm a" ->> 12:08 PM
"hh 'o''clock' a, zzzz" ->> 12 o'clock PM, Pacific Daylight Time
"K:mm a, vvv" ->> 0:00 PM, PT
"yyyyy.MMMMM.dd GGG hh:mm aaa" ->> 01996.July.10 AD 12:08 PM
Code Sample:
SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000);
pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);
// Format the current time.
SimpleDateFormat formatter
= new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz");
Date currentTime_1 = new Date();
String dateString = formatter.format(currentTime_1);
// Parse the previous string back into a Date.
ParsePosition pos = new ParsePosition(0);
Date currentTime_2 = formatter.parse(dateString, pos);
In the example, the time value currentTime_2 obtained from
parsing will be equal to currentTime_1 . However, they may not be
equal if the am/pm marker 'a' is left out from the format pattern while
the "hour in am/pm" pattern symbol is used. This information loss can
happen when formatting the time in PM.
When parsing a date string using the abbreviated year pattern ("yy"),
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
java.lang.Character.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.
If the year pattern does not have exactly two 'y' characters, the year is
interpreted literally, regardless of the number of digits. So using the
pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D.
When numeric fields abut one another directly, with no intervening delimiter
characters, they constitute a run of abutting numeric fields. Such runs are
parsed specially. For example, the format "HHmmss" parses the input text
"123456" to 12:34:56, parses the input text "12345" to 1:23:45, and fails to
parse "1234". In other words, the leftmost field of the run is flexible,
while the others keep a fixed width. If the parse fails anywhere in the run,
then the leftmost field is shortened by one character, and the entire run is
parsed again. This is repeated until either the parse succeeds or the
leftmost field is one character in length. If the parse still fails at that
point, the parse of the run fails.
For time zones that have no names, use strings GMT+hours:minutes or
GMT-hours:minutes.
The calendar defines what is the first day of the week, the first week
of the year, whether hours are zero based or not (0 vs 12 or 24), and the
time zone. There is one common decimal format to handle all the numbers;
the digit count is handled programmatically according to the pattern.
Synchronization
Date formats are not synchronized. It is recommended to create separate
format instances for each thread. If multiple threads access a format
concurrently, it must be synchronized externally.
See Also: com.ibm.icu.util.Calendar See Also: com.ibm.icu.util.GregorianCalendar See Also: com.ibm.icu.util.TimeZone See Also: DateFormat See Also: DateFormatSymbols See Also: DecimalFormat author: Mark Davis, Chen-Lieh Huang, Alan Liu |
Method Summary | |
public void | applyLocalizedPattern(String pattern) Apply the given localized pattern string to this date format. | public void | applyPattern(String pattern) Apply the given unlocalized pattern string to this date format. | public Object | clone() | public boolean | equals(Object obj) Override equals. | public StringBuffer | format(Calendar cal, StringBuffer toAppendTo, FieldPosition pos) Overrides DateFormat.
Formats a date or time, which is the standard millis
since January 1, 1970, 00:00:00 GMT.
Example: using the US locale:
"yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
Parameters: cal - the calendar whose date-time value is to be formatted into a date-time string Parameters: toAppendTo - where the new date-time text is to be appended Parameters: pos - the formatting position. | public Date | get2DigitYearStart() Returns the beginning date of the 100-year period 2-digit years are interpreted
as being within. | public DateFormatSymbols | getDateFormatSymbols() Gets the date/time formatting data. | protected DateFormatSymbols | getSymbols() Method for subclasses to access the DateFormatSymbols. | public int | hashCode() Override hashCode. | protected int | matchQuarterString(String text, int start, int field, String[] data, Calendar cal) Attempt to match the text at a given position against an array of quarter
strings. | protected int | matchString(String text, int start, int field, String[] data, Calendar cal) Attempt to match the text at a given position against an array of
strings. | public void | parse(String text, Calendar cal, ParsePosition parsePos) | public void | set2DigitYearStart(Date startDate) Sets the 100-year period 2-digit years will be interpreted as being in
to begin on the date the user specifies. | public void | setDateFormatSymbols(DateFormatSymbols newFormatSymbols) Allows you to set the date/time formatting data. | public void | setNumberFormat(NumberFormat newNumberFormat) | protected String | subFormat(char ch, int count, int beginOffset, FieldPosition pos, DateFormatSymbols formatData, Calendar cal) Format a single field, given its pattern character. | protected void | subFormat(StringBuffer buf, char ch, int count, int beginOffset, FieldPosition pos, Calendar cal) Format a single field; useFastFormat variant. | protected int | subParse(String text, int start, char ch, int count, boolean obeyCount, boolean allowNegative, boolean[] ambiguousYear, Calendar cal) Protected method that converts one field of the input string into a
numeric field value in cal . | public String | toLocalizedPattern() Return a localized pattern string describing this date format. | public String | toPattern() Return a pattern string describing this date format. | protected void | zeroPaddingNumber(StringBuffer buf, int value, int minDigits, int maxDigits) Internal high-speed method. | protected String | zeroPaddingNumber(long value, int minDigits, int maxDigits) Formats a number with the specified minimum and maximum number of digits. |
currentSerialVersion | final static int currentSerialVersion(Code) | | |
SimpleDateFormat | public SimpleDateFormat()(Code) | | Construct a SimpleDateFormat using the default pattern for the default
locale. Note: Not all locales support SimpleDateFormat; for full
generality, use the factory methods in the DateFormat class.
See Also: DateFormat |
SimpleDateFormat | public SimpleDateFormat(String pattern)(Code) | | Construct a SimpleDateFormat using the given pattern in the default
locale. Note: Not all locales support SimpleDateFormat; for full
generality, use the factory methods in the DateFormat class.
|
SimpleDateFormat | public SimpleDateFormat(String pattern, Locale loc)(Code) | | Construct a SimpleDateFormat using the given pattern and locale.
Note: Not all locales support SimpleDateFormat; for full
generality, use the factory methods in the DateFormat class.
|
SimpleDateFormat | public SimpleDateFormat(String pattern, ULocale loc)(Code) | | Construct a SimpleDateFormat using the given pattern and locale.
Note: Not all locales support SimpleDateFormat; for full
generality, use the factory methods in the DateFormat class.
|
SimpleDateFormat | public SimpleDateFormat(String pattern, DateFormatSymbols formatData)(Code) | | Construct a SimpleDateFormat using the given pattern and
locale-specific symbol data.
Warning: uses default locale for digits!
|
SimpleDateFormat | SimpleDateFormat(String pattern, DateFormatSymbols formatData, boolean useFastFormat)(Code) | | Package-private constructor that allows a subclass to specify
whether it supports fast formatting.
TODO make this API public.
|
SimpleDateFormat | SimpleDateFormat(int timeStyle, int dateStyle, ULocale loc)(Code) | | |
applyLocalizedPattern | public void applyLocalizedPattern(String pattern)(Code) | | Apply the given localized pattern string to this date format.
|
applyPattern | public void applyPattern(String pattern)(Code) | | Apply the given unlocalized pattern string to this date format.
|
equals | public boolean equals(Object obj)(Code) | | Override equals.
|
format | public StringBuffer format(Calendar cal, StringBuffer toAppendTo, FieldPosition pos)(Code) | | Overrides DateFormat.
Formats a date or time, which is the standard millis
since January 1, 1970, 00:00:00 GMT.
Example: using the US locale:
"yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
Parameters: cal - the calendar whose date-time value is to be formatted into a date-time string Parameters: toAppendTo - where the new date-time text is to be appended Parameters: pos - the formatting position. On input: an alignment field,if desired. On output: the offsets of the alignment field. the formatted date-time string. See Also: DateFormat |
get2DigitYearStart | public Date get2DigitYearStart()(Code) | | Returns the beginning date of the 100-year period 2-digit years are interpreted
as being within.
the start of the 100-year period into which two digit years areparsed |
getDateFormatSymbols | public DateFormatSymbols getDateFormatSymbols()(Code) | | Gets the date/time formatting data.
a copy of the date-time formatting data associatedwith this date-time formatter. |
hashCode | public int hashCode()(Code) | | Override hashCode.
Generates the hash code for the SimpleDateFormat object
|
matchQuarterString | protected int matchQuarterString(String text, int start, int field, String[] data, Calendar cal)(Code) | | Attempt to match the text at a given position against an array of quarter
strings. Since multiple strings in the array may match (for
example, if the array contains "a", "ab", and "abc", all will match
the input string "abcd") the longest match is returned. As a side
effect, the given field of cal is set to the index
of the best match, if there is one.
Parameters: text - the time text being parsed. Parameters: start - where to start parsing. Parameters: field - the date field being parsed. Parameters: data - the string array to parsed. the new start position if matching succeeded; a negativenumber indicating matching failure, otherwise. As a side effect,sets the cal field field to the indexof the best match, if matching succeeded. |
matchString | protected int matchString(String text, int start, int field, String[] data, Calendar cal)(Code) | | Attempt to match the text at a given position against an array of
strings. Since multiple strings in the array may match (for
example, if the array contains "a", "ab", and "abc", all will match
the input string "abcd") the longest match is returned. As a side
effect, the given field of cal is set to the index
of the best match, if there is one.
Parameters: text - the time text being parsed. Parameters: start - where to start parsing. Parameters: field - the date field being parsed. Parameters: data - the string array to parsed. the new start position if matching succeeded; a negativenumber indicating matching failure, otherwise. As a side effect,sets the cal field field to the indexof the best match, if matching succeeded. |
set2DigitYearStart | public void set2DigitYearStart(Date startDate)(Code) | | Sets the 100-year period 2-digit years will be interpreted as being in
to begin on the date the user specifies.
Parameters: startDate - During parsing, two digit years will be placed in the rangestartDate to startDate + 100 years . |
setDateFormatSymbols | public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)(Code) | | Allows you to set the date/time formatting data.
Parameters: newFormatSymbols - the new symbols |
setNumberFormat | public void setNumberFormat(NumberFormat newNumberFormat)(Code) | | Overrides superclass method
|
subFormat | protected String subFormat(char ch, int count, int beginOffset, FieldPosition pos, DateFormatSymbols formatData, Calendar cal) throws IllegalArgumentException(Code) | | Format a single field, given its pattern character. Subclasses may
override this method in order to modify or add formatting
capabilities.
Parameters: ch - the pattern character Parameters: count - the number of times ch is repeated in the pattern Parameters: beginOffset - the offset of the output string at the start ofthis field; used to set pos when appropriate Parameters: pos - receives the position of a field, when appropriate Parameters: formatData - the symbols for this formatter |
subFormat | protected void subFormat(StringBuffer buf, char ch, int count, int beginOffset, FieldPosition pos, Calendar cal)(Code) | | Format a single field; useFastFormat variant. Reuses a
StringBuffer for results instead of creating a String on the
heap for each call.
NOTE We don't really need the beginOffset parameter, EXCEPT for
the need to support the slow subFormat variant (above) which
has to pass it in to us.
TODO make this API public
|
subParse | protected int subParse(String text, int start, char ch, int count, boolean obeyCount, boolean allowNegative, boolean[] ambiguousYear, Calendar cal)(Code) | | Protected method that converts one field of the input string into a
numeric field value in cal . Returns -start (for
ParsePosition) if failed. Subclasses may override this method to
modify or add parsing capabilities.
Parameters: text - the time text to be parsed. Parameters: start - where to start parsing. Parameters: ch - the pattern character for the date field text to be parsed. Parameters: count - the count of a pattern character. Parameters: obeyCount - if true, then the next field directly abuts this one,and we should use the count to know when to stop parsing. Parameters: ambiguousYear - return parameter; upon return, if ambiguousYear[0]is true, then a two-digit year was parsed and may need to be readjusted. the new start position if matching succeeded; a negativenumber indicating matching failure, otherwise. As a side effect,set the appropriate field of cal with the parsedvalue. |
toLocalizedPattern | public String toLocalizedPattern()(Code) | | Return a localized pattern string describing this date format.
|
toPattern | public String toPattern()(Code) | | Return a pattern string describing this date format.
|
zeroPaddingNumber | protected void zeroPaddingNumber(StringBuffer buf, int value, int minDigits, int maxDigits)(Code) | | Internal high-speed method. Reuses a StringBuffer for results
instead of creating a String on the heap for each call.
|
zeroPaddingNumber | protected String zeroPaddingNumber(long value, int minDigits, int maxDigits)(Code) | | Formats a number with the specified minimum and maximum number of digits.
|
Methods inherited from com.ibm.icu.text.DateFormat | public Object clone()(Code)(Java Doc) public boolean equals(Object obj)(Code)(Java Doc) final public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)(Code)(Java Doc) abstract public StringBuffer format(Calendar cal, StringBuffer toAppendTo, FieldPosition fieldPosition)(Code)(Java Doc) public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)(Code)(Java Doc) final public String format(Date date)(Code)(Java Doc) public static Locale[] getAvailableLocales()(Code)(Java Doc) public static ULocale[] getAvailableULocales()(Code)(Java Doc) public Calendar getCalendar()(Code)(Java Doc) final public static DateFormat getDateInstance()(Code)(Java Doc) final public static DateFormat getDateInstance(int style)(Code)(Java Doc) final public static DateFormat getDateInstance(int style, Locale aLocale)(Code)(Java Doc) final public static DateFormat getDateInstance(int style, ULocale locale)(Code)(Java Doc) final public static DateFormat getDateInstance(Calendar cal, int dateStyle, Locale locale)(Code)(Java Doc) final public static DateFormat getDateInstance(Calendar cal, int dateStyle, ULocale locale)(Code)(Java Doc) final public static DateFormat getDateInstance(Calendar cal, int dateStyle)(Code)(Java Doc) final public static DateFormat getDateTimeInstance()(Code)(Java Doc) final public static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)(Code)(Java Doc) final public static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)(Code)(Java Doc) final public static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, ULocale locale)(Code)(Java Doc) final public static DateFormat getDateTimeInstance(Calendar cal, int dateStyle, int timeStyle, Locale locale)(Code)(Java Doc) final public static DateFormat getDateTimeInstance(Calendar cal, int dateStyle, int timeStyle, ULocale locale)(Code)(Java Doc) final public static DateFormat getDateTimeInstance(Calendar cal, int dateStyle, int timeStyle)(Code)(Java Doc) final public static DateFormat getInstance()(Code)(Java Doc) final public static DateFormat getInstance(Calendar cal, Locale locale)(Code)(Java Doc) final public static DateFormat getInstance(Calendar cal, ULocale locale)(Code)(Java Doc) final public static DateFormat getInstance(Calendar cal)(Code)(Java Doc) public NumberFormat getNumberFormat()(Code)(Java Doc) final public static DateFormat getTimeInstance()(Code)(Java Doc) final public static DateFormat getTimeInstance(int style)(Code)(Java Doc) final public static DateFormat getTimeInstance(int style, Locale aLocale)(Code)(Java Doc) final public static DateFormat getTimeInstance(int style, ULocale locale)(Code)(Java Doc) final public static DateFormat getTimeInstance(Calendar cal, int timeStyle, Locale locale)(Code)(Java Doc) final public static DateFormat getTimeInstance(Calendar cal, int timeStyle, ULocale locale)(Code)(Java Doc) final public static DateFormat getTimeInstance(Calendar cal, int timeStyle)(Code)(Java Doc) public TimeZone getTimeZone()(Code)(Java Doc) public int hashCode()(Code)(Java Doc) public boolean isLenient()(Code)(Java Doc) public Date parse(String text) throws ParseException(Code)(Java Doc) abstract public void parse(String text, Calendar cal, ParsePosition pos)(Code)(Java Doc) public Date parse(String text, ParsePosition pos)(Code)(Java Doc) public Object parseObject(String source, ParsePosition pos)(Code)(Java Doc) public void setCalendar(Calendar newCalendar)(Code)(Java Doc) public void setLenient(boolean lenient)(Code)(Java Doc) public void setNumberFormat(NumberFormat newNumberFormat)(Code)(Java Doc) public void setTimeZone(TimeZone zone)(Code)(Java Doc)
|
|
|