Use DateUtils.truncate()
to throw out all fields less
significant than the specified field. When a Date
is truncated to the Calendar.MONTH
field,
DateUtils.truncate( )
will return a
Date
object set to the first instance of the
month. The
day, hour, minute, second, and
millisecond field will each contain the minimum possible value for
that field. Example 1-9 truncates a date at the
month field and the hour field.
Example 1-9. Truncating a Date object at Calendar.MONTH
import org.apache.commons.lang.time.DateUtils; import org.apache.commons.lang.time.FastDateFormat; import org.apache.commons.lang.time.DateFormatUtils; FastDateFormat dtFormat = DateFormatUtils.ISO_DATETIME_FORMAT; Date now = new Date( ); Date truncatedMonth = DateUtils.truncate( now, Calendar.MONTH ); Date truncatedHour = DateUtils.truncate( now, Calendar.HOUR ); System.out.println( "Now: " + dtFormat.format( now ) ); System.out.println( "Truncated Month: " + dtFormat.format( truncatedMonth ) ); System.out.println( "Truncated Hour: " + dtFormat.format( truncatedHour ) );
Assuming that the current date is March 28, 2004, and the current time is 1:48 P.M., this example produces the following output:
Now: 2004-03-28T13:48:12 Truncated Month: 2004-03-01T00:00:00 Truncated Hour: 2004-03-28T13:00:00
If you want to associate every event that happened between 2 P.M. and
3 P.M. with the 2 P.M. hour, or every event that happened in a
particular year with the first instant of that year, you need to
truncate a Date
at a specified
Calendar
field. When a Date
is
truncated, it is rounded down; DateUtils.truncate()
is the equivalent of Math.floor( )
for
the Date
class. If it is 4:02 P.M. on October 31,
1975, a Date
object truncated at the
Calendar.HOUR
field will point to 4:00 P.M., and a
Date
truncated at the
Calendar.YEAR
field will point to the first
millisecond of the first minute, of the first hour, of the first day
of year 2005: January 01 2005: 12:00:00.000 A.M
.
DateUtils.truncate( )
can also be used to truncate
a date to the nearest DateUtils.SEMI_MONTH
.
Recipe 1.14 discusses
DateUtils.SEMI_MONTH
in more detail.
Get Jakarta Commons 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.