variable una tipo sumar para ingresar hora gregorian fecha ejemplo dias dato clase java calendar timezone

java - una - Usar 2 instancias de clase de calendario para obtener diferencia de tiempo



tipo de dato para hora en java (2)

Está llamando a getTime() para obtener una instancia de Date y, a continuación, llamar a toString() sobre eso, implícitamente, eso siempre usará la zona horaria local del sistema.

Desea utilizar SimpleDateFormat para que pueda controlar la zona horaria utilizada para el formateo. Por ejemplo:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm z", Locale.US); formatter.setTimeZone(depart.getTimeZone()); System.out.println("Depart: " + formatter.format(depart.getTime())); formatter.setTimeZone(arrive.getTimeZone()); System.out.println("Arrive: " + formatter.format(arrive.getTime()));

Estoy usando la biblioteca de Calendar dentro de Java para tratar de resolver un problema con mi aplicación:

Tengo dos instancias de Calendario, depart y llegué.

depart a las 5:35 pm el 15/7/2015 desde Chicago, mientras que arrive a las 9:50 a.m. el 16/7/15 en Berlín, Alemania.

Mi código actual para mostrar la duración del viaje es:

Calendar depart = Calendar.getInstance(); Calendar arrive = Calendar.getInstance(); depart.setTimeZone(TimeZone.getTimeZone("America/Chicago")); arrive.setTimeZone(TimeZone.getTimeZone("Europe/Berlin")); depart.set(Calendar.MONTH, 6); depart.set(Calendar.DAY_OF_MONTH, 15); depart.set(Calendar.HOUR_OF_DAY, 17); depart.set(Calendar.MINUTE, 35); arrive.set(Calendar.MONTH, 6); arrive.set(Calendar.DAY_OF_MONTH, 16); arrive.set(Calendar.HOUR_OF_DAY, 9); arrive.set(Calendar.MINUTE, 50); System.out.println("Depart: " + depart.getTime() + "/nArrive: " + arrive.getTime()); long hours = (arrive.getTimeInMillis() - depart.getTimeInMillis()) / (1000*60*60); long minutes = (arrive.getTimeInMillis() - depart.getTimeInMillis()) / (1000*60) - (hours*60); System.out.println("Flight duration: " + hours + " hours" + " " + minutes + " minutes");`

y el resultado es:

Depart: Wed Jul 15 17:35:53 CDT 2015 Arrive: Thu Jul 16 02:50:53 CDT 2015 Flight duration: 9 hours 15 minutes

... Pero necesito que el resultado sea:

Depart: Wed Jul 15 17:35:53 CDT 2015 Arrive: Thu Jul 16 **09:50:53 Central European Timezone** 2015 Flight duration: 9 hours 15 minutes

Necesito cambiar tanto la partida como la llegada para que muestren su hora local, pero aún así informen la duración correcta del viaje de 9 horas y 15 minutos.


Puede usar DateFormat s para presentar sus fechas como lo desee:

DateFormat departDF = DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.LONG, Locale.US ); departDF.setTimeZone(depart.getTimeZone()); System.out.println(departDF.format(depart.getTime())); DateFormat arriveDF = DateFormat.getDateTimeInstance( // change to US if you want them homologated // it won''t change the time zone info or date/time DateFormat.LONG, DateFormat.LONG, Locale.GERMANY ); arriveDF.setTimeZone(arrive.getTimeZone()); System.out.println(arriveDF.format(arrive.getTime()));

Salida

July 15, 2015 5:35:43 PM CDT 16. Juli 2015 09:50:43 CEST