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 ava.util.GregorianCalendar[time=932363506950,areFieldsSet=true,areAllFieldsSet=true, lenient=true,zone=java.util.SimpleTimeZone[id=America/Los_Angeles,offset=-28800000, dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=3,startDay=1, startDayOfWeek=1,startTime=7200000,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1, endTime=7200000],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1999,MONTH=6, WEEK_OF_YEAR=30,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=199,DAY_OF_WEEK=1, DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=51,SECOND=46, MILLISECOND=950,ZONE_OFFSET=-28800000,DST_OFFSET=3600000]
Calendar
’s getTime( )
returns a Date
object,
which can be passed to
println( )
to print today’s date (and time)
in the traditional (but non-localized) format:
// Date2.java System.out.println(Calendar.getInstance().getTime( ));
To print the date in any other format, use a
java.text.DateFormat
, which you’ll meet in
Section 6.3.
[21] Just to be clear: Date
’s
getTime()
returns the time in seconds, while
Calendar
’s getTime(
)
returns a Date
.
3.143.205.136