tags:

views:

566

answers:

2

I have current have two UI components used to specify a date and a time. Both components return java.util.Date instances representing the calendar date and time respectively. My question is:

What is the best way to combine these values to create a java.util.Date instance representing the date and time? I would like to avoid dependencies on Joda or other 3rd party libraries.

My current solution looks like this (but is there a better way?):

Date date = ... // Calendar date
Date time = ... // Time

Calendar calendarA = Calendar.getInstance();
calendarA.setTime(date);

Calendar calendarB = Calendar.getInstance();
calendarB.setTime(time);

calendarA.set(Calendar.HOUR_OF_DAY, calendarB.get(Calendar.HOUR_OF_DAY));
calendarA.set(Calendar.MINUTE, calendarB.get(Calendar.MINUTE));
calendarA.set(Calendar.SECOND, calendarB.get(Calendar.SECOND));
calendarA.set(Calendar.MILLISECOND, calendarB.get(Calendar.MILLISECOND));

Date result = calendarA.getTime();
+2  A: 

I think you're approach is the best you're likely to get without using Joda time. A solution using SimpleDateFormats might use fewer lines, but is not really giving you any benefit.

Rich Seller
Not clear to me what in this answer is worthy of a downvote. Would anyone care to explain?
Rich Seller
+2  A: 
public Date dateTime(Date date, Date time) {
    return new Date(
                     date.getYear(), date.getMonth(), date.getDay(), 
                     time.getHours(), time.getMinutes(), time.getSeconds()
                   );
}

you can corvert this deprecated code to Calendar obtaining your solution.

Then my answer is: no, you cannot do better without using joda

NB

jodatime soon will be standardized with JSR 310

dfa