variable ingresar fecha ejemplo declarar atributo java datetime

ingresar - private date fecha java



Combinar java.util.Dates para crear una fecha y hora (3)

Actualmente tengo dos componentes de UI utilizados para especificar una fecha y una hora. Ambos componentes devuelven instancias java.util.Date representan la fecha y la hora del calendario respectivamente. Mi pregunta es:

¿Cuál es la mejor manera de combinar estos valores para crear una instancia java.util.Date represente la fecha y la hora? Me gustaría evitar las dependencias en Joda u otras bibliotecas de terceros.

Mi solución actual se ve así (pero ¿hay una mejor manera?):

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();


Usando el calendario

public Date dateTime(Date date, Date time) { Calendar aDate = Calendar.getInstance(); aDate.setTime(date); Calendar aTime = Calendar.getInstance(); aTime.setTime(time); Calendar aDateTime = Calendar.getInstance(); aDateTime.set(Calendar.DAY_OF_MONTH, aDate.get(Calendar.DAY_OF_MONTH)); aDateTime.set(Calendar.MONTH, aDate.get(Calendar.MONTH)); aDateTime.set(Calendar.YEAR, aDate.get(Calendar.YEAR)); aDateTime.set(Calendar.HOUR, aTime.get(Calendar.HOUR)); aDateTime.set(Calendar.MINUTE, aTime.get(Calendar.MINUTE)); aDateTime.set(Calendar.SECOND, aTime.get(Calendar.SECOND)); return aDateTime.getTime(); }


Creo que tu enfoque es lo mejor que puedes obtener sin usar el tiempo de Joda. Una solución que utiliza SimpleDateFormats puede usar menos líneas, pero en realidad no le brinda ningún beneficio.


public Date dateTime(Date date, Date time) { return new Date( date.getYear(), date.getMonth(), date.getDay(), time.getHours(), time.getMinutes(), time.getSeconds() ); }

Puede convertir este código en desuso en Calendario para obtener su solución.

Entonces mi respuesta es: no, no puedes hacerlo mejor sin usar joda.

nótese bien

Jodatime pronto será estandarizado con JSR 310