Previous | Next | Trail Map | Internationalization | Formatting

Using Predefined Formats

The DateFormat (in the API reference documentation)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: 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


Previous | Next | Trail Map | Internationalization | Formatting