The
DateFormat
class allows you to format dates and times
with predefined styles
in a locale-sensitive manner.
Like all locale-sensitive classes,
DateFormat does not support all possible
Locale definitions. To find out which
Locale definitions DateFormat
recognizes, invoke the getAvailableLocales method:
Locale[] locales = DateFormat.getAvailableLocales();
In the sections that follow, you'll learn how to
format dates and times with the DateFormat class.
The examples shown are from a program called
DateFormatDemo.java.
Dates
Formatting dates with the DateFormat class is a two-step
process. First, you create a formatter
with the getDateInstance method. Second, you invoke
the format method, which returns a String containing
the formatted date. The following example
formats today's date by calling these two methods:
Date today;
String dateOut;
DateFormat dateFormatter;
dateFormatter =
DateFormat.getDateInstance(DateFormat.DEFAULT, currentLocale);
today = new Date();
dateOut = dateFormatter.format(today);
System.out.println(dateOut + " " + currentLocale.toString());
The output generated by this code follows.
Notice that the formats
of the dates vary with Locale.
Since DateFormat is locale-sensitive,
it takes care of the formatting details for
each Locale.
9 avr 98 fr_FR
9.4.1998 de_DE
09-Apr-98 en_US
The preceding code example specified
the DEFAULT formatting style.
The DEFAULT style is just one of the predefined formatting
styles that the DateFormat class provides:
-
DEFAULT
-
SHORT
-
MEDIUM
-
LONG
-
FULL
The following table shows
how dates are formatted for each style
with the U.S. and French locales:
| Style |
U.S. Locale |
French Locale |
| DEFAULT |
10-Apr-98 |
10 avr 98 |
| SHORT |
4/10/98 |
10/04/98 |
| MEDIUM |
10-Apr-98 |
10 avr 98 |
| LONG |
April 10, 1998 |
10 avril 1998 |
| FULL |
Friday, April 10, 1998 |
vendredi, 10 avril 1998 |
Times
Date objects represent both dates and times.
Formatting times with the
DateFormat class is similar to formatting dates,
except you create the formatter with the
getTimeInstance method:
DateFormat timeFormatter =
DateFormat.getTimeInstance(DateFormat.DEFAULT, currentLocale);
The table that follows shows
the different predefined format styles for the U.S. and German locales:
| Style |
U.S. Locale |
German Locale |
| DEFAULT |
3:58:45 PM |
15:58:45 |
| SHORT |
3:58 PM |
15:58 |
| MEDIUM |
3:58:45 PM |
15:58:45 |
| LONG |
3:58:45 PM PDT |
15:58:45 GMT+02:00 |
| FULL |
3:58:45 oclock PM PDT |
15.58 Uhr GMT+02:00 |
Both Dates and Times
To display a date and time in the same String,
create the formatter with the getDateTimeInstance method.
The first parameter is the date style, and the second is the
time style. The third parameter is our old friend, the Locale.
Here's a quick example:
DateFormat formatter = DateFormat.getDateTimeInstance(
DateFormat.LONG, DateFormat.LONG, currentLocale);
The following table shows
the date and time formatting styles
for the U.S. and French locales:
| Style |
U.S. Locale |
French Locale |
| DEFAULT |
25-Jun-98 1:32:19 PM |
25 jun 98 22:32:20 |
| SHORT |
6/25/98 1:32 PM |
25/06/98 22:32 |
| MEDIUM |
25-Jun-98 1:32:19 PM |
25 jun 98 22:32:20 |
| LONG |
June 25, 1998 1:32:19 PM PDT |
25 juin 1998 22:32:20 GMT+02:00 |
| FULL |
Thursday, June 25, 1998 1:32:19 o'clock PM PDT |
jeudi, 25 juin 1998 22 h 32 GMT+02:00 |