Class SimpleDateFormat
- java.lang.Object
-
- java.text.DateFormat
-
- java.text.SimpleDateFormat
-
public class SimpleDateFormat extends DateFormat
SimpleDateFormatis a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows for formatting (date → text), parsing (text → date), and normalization.SimpleDateFormatallows you to start by choosing any user-defined patterns for date-time formatting. However, you are encouraged to create a date-time formatter with eithergetTimeInstance,getDateInstance, orgetDateTimeInstanceinDateFormat. Each of these class methods can return a date/time formatter initialized with a default format pattern. You may modify the format pattern using theapplyPatternmethods as desired. For more information on using these methods, seeDateFormat.Date and Time Patterns
Date and time formats are specified by date and time pattern strings. Within date and time pattern strings, unquoted letters from
'A'to'Z'and from'a'to'z'are interpreted as pattern letters representing the components of a date or time string. Text can be quoted using single quotes (') to avoid interpretation."''"represents a single quote. All other characters are not interpreted; they're simply copied into the output string during formatting or matched against the input string during parsing.The following pattern letters are defined (all other characters from
'A'to'Z'and from'a'to'z'are reserved):
Pattern letters are usually repeated, as their number determines the exact presentation:Letter Date or Time Component Presentation Examples GEra designator Text ADyYear Year 1996;96YWeek year Year 2009;09MMonth in year Month July;Jul;07wWeek in year Number 27WWeek in month Number 2DDay in year Number 189dDay in month Number 10FDay of week in month Number 2EDay name in week Text Tuesday;TueuDay number of week (1 = Monday, ..., 7 = Sunday) Number 1aAm/pm marker Text PMHHour in day (0-23) Number 0kHour in day (1-24) Number 24KHour in am/pm (0-11) Number 0hHour in am/pm (1-12) Number 12mMinute in hour Number 30sSecond in minute Number 55SMillisecond Number 978- Text: For formatting, if the number of pattern letters is 4 or more, the full
form is used; otherwise a short or abbreviated form is used if available. For parsing, both forms are accepted,
independent of the number of pattern letters.
- Number: For formatting, the number of pattern letters is the minimum number
of digits, and shorter numbers are zero-padded to this amount. For parsing, the number of pattern letters is ignored
unless it's needed to separate two adjacent fields.
- Year: If the formatter's
Calendaris the Gregorian calendar, the following rules are applied.
- For formatting, if the number of pattern letters is 2, the year is truncated to 2 digits; otherwise it is interpreted as a number.
- For parsing, if the number of pattern letters is more than 2, 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.
- For parsing with the abbreviated year pattern ("y" or "yy"),
SimpleDateFormatmust 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 theSimpleDateFormatinstance is created. For example, using a pattern of "MM/dd/yy" and aSimpleDateFormatinstance 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 byCharacter.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.
- Month: If the number of pattern letters is 3 or more, the month is
interpreted as text; otherwise, it is interpreted as a number.
Examples
The following examples show how date and time patterns are interpreted.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-3Synchronization
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:
- Java Tutorial,
Calendar,DateFormat,DateFormatSymbols
- Text: For formatting, if the number of pattern letters is 4 or more, the full
form is used; otherwise a short or abbreviated form is used if available. For parsing, both forms are accepted,
independent of the number of pattern letters.
-
-
Constructor Summary
Constructors Constructor Description SimpleDateFormat()Constructs aSimpleDateFormatusing the default pattern and date format symbols.SimpleDateFormat(String pattern)Constructs aSimpleDateFormatusing the given pattern and the default date format symbols.SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)Constructs aSimpleDateFormatusing the given pattern and date format symbols.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidapplyPattern(String pattern)Applies the given pattern string to this date format.Stringformat(Date date)Formats a Date into a date/time string.DateFormatSymbolsgetDateFormatSymbols()Gets a copy of the date and time format symbols of this date format.voidsetDateFormatSymbols(DateFormatSymbols newFormatSymbols)Sets the date and time format symbols of this date format.StringtoPattern()Returns a pattern string describing this date format.-
Methods inherited from class java.text.DateFormat
getCalendar, getDateInstance, getDateInstance, getDateTimeInstance, getDateTimeInstance, getInstance, getTimeInstance, getTimeInstance, setCalendar
-
-
-
-
Constructor Detail
-
SimpleDateFormat
public SimpleDateFormat()
Constructs aSimpleDateFormatusing the default pattern and date format symbols. Note: This constructor may not support all locales. For full coverage, use the factory methods in theDateFormatclass.
-
SimpleDateFormat
public SimpleDateFormat(String pattern)
Constructs aSimpleDateFormatusing the given pattern and the default date format symbols. For full coverage, use the factory methods in theDateFormatclass.This is equivalent to calling.
- Parameters:
pattern- the pattern describing the date and time format- Throws:
NullPointerException- if the given pattern is nullIllegalArgumentException- if the given pattern is invalid
-
SimpleDateFormat
public SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)
Constructs aSimpleDateFormatusing the given pattern and date format symbols.- Parameters:
pattern- the pattern describing the date and time formatformatSymbols- the date format symbols to be used for formatting- Throws:
NullPointerException- if the given pattern or formatSymbols is nullIllegalArgumentException- if the given pattern is invalid
-
-
Method Detail
-
format
public String format(Date date)
Description copied from class:DateFormatFormats a Date into a date/time string.- Specified by:
formatin classDateFormat- Parameters:
date- the time value to be formatted into a time string.- Returns:
- the formatted time string.
-
toPattern
public String toPattern()
Returns a pattern string describing this date format.- Returns:
- a pattern string describing this date format.
-
applyPattern
public void applyPattern(String pattern)
Applies the given pattern string to this date format.- Parameters:
pattern- the new date and time pattern for this date format- Throws:
NullPointerException- if the given pattern is nullIllegalArgumentException- if the given pattern is invalid
-
getDateFormatSymbols
public DateFormatSymbols getDateFormatSymbols()
Gets a copy of the date and time format symbols of this date format.- Returns:
- the date and time format symbols of this date format
- See Also:
setDateFormatSymbols(java.text.DateFormatSymbols)
-
setDateFormatSymbols
public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
Sets the date and time format symbols of this date format.- Parameters:
newFormatSymbols- the new date and time format symbols- Throws:
NullPointerException- if the given newFormatSymbols is null- See Also:
getDateFormatSymbols()
-
-