2008-09-26 13 views
5

¿Cuál es una manera eficiente de obtener un cierto tiempo para el día siguiente en Java? Digamos que quiero el largo para mañana 03:30:00. Establecer campos de calendario y formato de fecha son obvios. Ideas mejores o más inteligentes, ¡gracias por compartirlas!Obtenga la hora de mañana xx: xx

Okami

Respuesta

14

Tomo el método de fuerza bruta

// make it now 
Calendar dateCal = Calendar.getInstance(); 
// make it tomorrow 
dateCal.add(Calendar.DAY_OF_YEAR, 1); 
// Now set it to the time you want 
dateCal.set(Calendar.HOUR_OF_DAY, hours); 
dateCal.set(Calendar.MINUTE, minutes); 
dateCal.set(Calendar.SECOND, seconds); 
dateCal.set(Calendar.MILLISECOND, 0); 
return dateCal.getTime(); 
+1

dateCal.setTime (new Date()) es redundante. Calendar.getInstance() devuelve un calendario eso es "basado en n la hora actual en la zona horaria predeterminada con la configuración regional predeterminada ". –

+0

Gracias, me perdí un poco el método de agregar! – Okami

2

tengo curiosidad por escuchar lo que otros tienen que decir acerca de esto. Mi propia experiencia es que tomar atajos (es decir, "ideas mejores o más inteligentes") con Date s casi siempre te causa problemas. Diablos, solo usando java.util.Date está buscando problemas.

Agregado: Muchos han recomendado Joda Time en otros hilos relacionados con la fecha.

+0

mente dando algunos ejemplos de por qué se mete en problemas. – Anton

+0

atajos casi siempre ignoran los efectos de zona horaria, horario de verano, año bisiesto, segundo salto, etc. Por ejemplo, el mismo momento que ahora mañana no es necesariamente ahora + 86400 segundos. –

+0

Además, agregaré que los errores relacionados con los efectos de TZ, DST, etc. son los tipos nefastos de errores que son fáciles de deslizar más allá del departamento de QA. Como prueba, considere cómo en el mundo java.util.Date lo convirtió en Java 1.0 con todos sus problemas TZ. –

0

Consideraría utilizar la API predefinida de la manera inteligente de hacerlo.

0

¿No estás seguro de por qué no utilizarías simplemente el objeto Calendar? Es fácil y sostenible. Estoy de acuerdo en no usar Date, prácticamente todo lo que es útil ahora está obsoleto. :(

Cuestiones relacionadas