Creating a java.util.Date object using GregorianCalendar Tuesday, January 04, 2005

Given three primitive integers representing day, month and year and constructing a java.util.Date object used to be so easy in the JDK 1.0 days. But now the setDay() , setMonth() , and setYear() methods have been deprecated in favour of using Calendar object - presumably to incorporate the various calendaring systems around the world.

Looking through the JDK 1.3.1 specification shows two valid constructors for a Date object: a default constructor, and one that takes a timestamp in milliseconds. Obviously any Calendar object needs to be able to convert a date into a timestamp so we can properly instantiate a Date object - this is done by the getTime() method.

Here's the barebones code needed to convert three integers (stored as String s) into a valid Date object. Note the data is not validated at this point - my application has already checked the validity of the data right up in the Struts ActionForm . Also months in Java run from 0 through to 11, requiring a -1 on the month parameter.

String year = "2004"; String month = "12"; String day = "31"; GregorianCalendar newGregCal = new GregorianCalendar( Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day) ); Date newDate = new Date(newGregCal.getTime());

The above code looks easy enough, but its a devil of a job getting the code down to something as simple as this.

[ Weblog | Categories and feeds | 2011 | 2010 | 2009 | 2008 | 2007 | 2006 | 2005 | 2004 | 2003 | 2002 ]