Download the JDK
Search the Tutorials
Hide the TOC
Trail: Internationalization
Lesson: Formatting
Section: Dates and Times
Formatting
Numbers and Currencies
Using Predefined Formats
Customizing Formats
Dates and Times
Using Predefined Formats
Customizing Formats
Changing Date Format Symbols
Messages
Dealing with Compound Messages
Handling Plurals
Home Page > Internationalization > Formatting
Using Predefined Formats

> The `DateFormat` class allows you to format dates and times with predefined styles in a locale-sensitive manner. The sections that follow demonstrate how to use the `DateFormat` class with 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, as follows:

> - DEFAULT
> - SHORT
> - MEDIUM
> - LONG
> - FULL

> The following table shows how dates are formatted for each style with the U.S. and French locales:

> ### Sample Date Formats

> 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 that you create the formatter with the `getTimeInstance` method, as follows:

> >     DateFormat timeFormatter =
> >         DateFormat.getTimeInstance(DateFormat.DEFAULT,
> >                                    currentLocale);

> The table that follows shows the various predefined format styles for the U.S. and German locales:

> ### Sample Time Formats

> 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 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:

> ### Sample Date and Time Formats

> 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 page: Dates and Times
Next page: Customizing Formats