Converting YMDHMS to a Calendar or Epoch Seconds
Problem
You have
year, month, day, hour, minute,
and maybe even
seconds, and you need to convert it to a Calendar
or a Date
.
Solution
Use the Calendar
class’s
set(y,m,d,h,m[,s])
method, which allows you to set the date/time fields to whatever you
wish. Note that when using this form and
providing your own numbers or when constructing either a
Date
or a GregorianCalendar
object, the month value is zero-based while all the other values are
true-origin. Presumably, this is to allow you to print the month name
from an array without having to remember to subtract one, but it is
confusing.
// GregCalDemo.java GregorianCalendar d1 = new GregorianCalendar(1986, 04, 05); // May 5 GregorianCalendar d2 = new GregorianCalendar( ); // today Calendar d3 = Calendar.getInstance( ); // today System.out.println("It was then " + d1.getTime( )); System.out.println("It is now " + d2.getTime( )); System.out.println("It is now " + d3.getTime( )); d3.set(Calendar.YEAR, 1915); d3.set(Calendar.MONTH, Calendar.APRIL); d3.set(Calendar.DAY_OF_MONTH, 12); System.out.println("D3 set to " + d3.getTime( ));
This prints the dates as shown:
It was then Mon May 05 00:00:00 PDT 1986 It is now Sun Jul 18 22:51:47 PDT 1999 It is now Sun Jul 18 22:51:47 PDT 1999 D3 set to Mon Apr 12 22:51:47 PDT 1915
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.