The previous section, Using Predefined Formats, described the formatting styles provided by theDateFormat
class. In most cases these predefined formats are adequate. However, if you want to create your own customized formats, you can use theSimpleDateFormat
class.The code examples that follow demonstrate the methods of the
SimpleDateFormat
class. You can find the full source code for the examples in the file namedSimpleDateFormatDemo
.
When you create aSimpleDateFormat
object, you specify a patternString
. The contents of the patternString
determine the format of the date and time. For a full description of the pattern's syntax, see the tables in Date Format Pattern Syntax.The following code formats a date and time according to the pattern
String
passed to theSimpleDateFormat
constructor. TheString
returned by theformat
method contains the formatted date and time that are to be displayed.Date today; String output; SimpleDateFormat formatter; formatter = new SimpleDateFormat(pattern, currentLocale); today = new Date(); output = formatter.format(today); System.out.println(pattern + " " + output);The following table shows the output generated by the previous code example when the U.S.
Locale
is specified:
Customized Date and Time Formats
Pattern Output dd.MM.yy 09.04.98 yyyy.MM.dd G 'at' hh:mm:ss z 1998.04.09 AD at 06:15:55 PDT EEE, MMM d, ''yy Thu, Apr 9, '98 h:mm a 6:15 PM H:mm 18:15 H:mm:ss:SSS 18:15:55:624 K:mm a,z 6:15 PM,PDT yyyy.MMMMM.dd GGG hh:mm aaa 1998.April.09 AD 06:15 PM
TheSimpleDateFormat
class is locale-sensitive. If you instantiateSimpleDateFormat
without aLocale
parameter, it will format the date and time according to the defaultLocale
. Both the pattern and theLocale
determine the format. For the same pattern,SimpleDateFormat
may format a date and time differently if theLocale
varies.In the example code that follows, the pattern is hardcoded in the statement that creates the
SimpleDateFormat
object:Date today; String result; SimpleDateFormat formatter; formatter = new SimpleDateFormat("EEE d MMM yy", currentLocale); today = new Date(); result = formatter.format(today); System.out.println("Locale: " + currentLocale.toString()); System.out.println("Result: " + result);When the
currentLocale
is set to different values, the preceding code example generates this output:Locale: fr_FR Result: ven 10 avr 98 Locale: de_DE Result: Fr 10 Apr 98 Locale: en_US Result: Thu 9 Apr 98Date Format Pattern Syntax
You can design your own format patterns for dates and times from the list of symbols in the following table:Characters that are not letters are treated as quoted text. That is, they will appear in the formatted text even if they are not enclosed within single quotes.
Symbol Meaning Presentation Example G era designator Text AD y year Number 1996 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 millisecond Number 978 E day in week Text Tuesday 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 ' escape for text Delimiter (none) ' single quote Literal ' The number of symbol letters you specify also determines the format. For example, if the "zz" pattern results in "PDT," then the "zzzz" pattern generates "Pacific Daylight Time." The following table summarizes these rules:
Presentation Number of Symbols Result Text 1 - 3 abbreviated form, if one exists Text >= 4 full form Number minimum number of digits is required shorter numbers are padded with zeros (for a year, if the count of 'y' is 2, then the year is truncated to 2 digits) Text & Number 1 - 2 number form Text & Number 3 text form