O'Reilly logo

Java Cookbook by Ian F. Darwin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Finding Today’s Date

Problem

You want to find today’s date.

Solution

Use a Date object’s toString( ) method.

Discussion

The quick and simple way to get today’s date and time is to construct a Date object with no arguments in the constructor call, and call its toString( ) method:

// Date0.java 
System.out.println(new java.util.Date(  ));

However, for reasons just outlined, we want to use a Calendar object. Just use Calendar.getInstance().getTime( ), which returns a Date object (even though the name makes it seem like it should return a Time value[21]), and print the resulting Date object, either using its toString( ) method or a DateFormat object. You might be tempted to construct a GregorianCalendar object, using the no-argument constructor, but if you do this, your program will not give the correct answer when non-western locales get Calendar subclasses of their own (in some future release of Java). The static factory method Calendar.getInstance( ) returns a localized Calendar subclass for the locale you are in. In North America and Europe it will likely return a GregorianCalendar, but in other parts of the world it might (someday) return a different kind of Calendar.

Do not try to use a GregorianCalendar ’s toString( ) method; the results are truly impressive, but not very interesting. Sun’s implementation prints all its internal state information; Kaffe’s inherits Object’s toString( ), which just prints the class name and the hashcode. Neither is useful for our purposes.

// Date1,.javaj ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required