Printing Date/Time in a Specified Format

Problem

You want to print the date and/or time in a specified format.

Solution

Use a java.text.DateFormat.

Discussion

To print the date in the correct format for whatever locale your software lands in, simply use the default DateFormat formatter, which is obtained by calling DateFormat.getInstance( ) .

Suppose you want the date printed, but instead of the default format “Sun Jul 18 16:14:09 PDT 1999”, you want it printed like “Sun 1999.07.18 at 04:14:09 PM PDT”. A look at the Javadoc page for SimpleDateFormat -- the only non-abstract subclass of DateFormat -- reveals that it has a rich language for specifying date and time formatting. To use a default format, of course, we can just use the Date object’s toString( ) method, and for a localized default format, we use DateFormat.getInstance( ). But to have full control and get the “Sun 1999.07.18 at 04:14:09 PM PDT”, we construct an instance explicitly, like so:

new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

E means the day of the week; yyyy, MM, and dd are obviously year, month, and day. The quoted string 'at' means the string “at”. hh:mm:ss is the time; a means A.M. or P.M., and zzz means the time zone. Some of these are more memorable than others; I find the zzz tends to put me to sleep. Here’s the code:

// DateDemo.java Date dNow = new Date( ); /* Simple, Java 1.0 date printing */ System.out.println("It is now " + dNow.toString( )); // Use a SimpleDateFormat to print the date ...

Get Java Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.