settimezone gettimezone java calendar timezone

gettimezone - Trabajar con varios Calendar TimeZone en Java(sin utilizar Joda Time)



timezone gettimezone utc 3 (2)

Como señaló Jon, el método getTime() devuelve un objeto java.util.Date que tiene solo un valor de milisegundo y no reconoce la zona horaria.

Si solo desea imprimir los horarios, puede usar el calendario y obtener manualmente los campos que desee.

System.out.println(utc.get(Calendar.HOUR_OF_DAY) + ":" + utc.get(Calendar.MINUTE))

Esto necesitaría algún formateo por un minuto <10 para mostrar el 0

Estaba buscando una forma de obtener la hora actual en varias zonas horarias en función de la entrada de un usuario. ¡Sé que podría usar Joda Time ! pero, ¿es esa la única forma?

¿No hay una opción en Java para hacer esto? Probé el siguiente código que da el mismo resultado para las 3 sysouts.

Calendar pst = Calendar.getInstance(TimeZone.getTimeZone("PST")); System.out.println("PST " + pst.getTime()); Calendar ist = Calendar.getInstance(TimeZone.getTimeZone("Asia/Calcutta")); System.out.println("IST " + ist.getTime()); Calendar utc = Calendar.getInstance(TimeZone.getTimeZone("Etc/UTC")); System.out.println("UCT " + utc.getTime());

¿Qué me falta aquí para obtener la hora actual en otras zonas horarias?


Sí, eso mostraría el mismo valor en cada caso (o milisegundos aparte) porque los tres calendarios se refieren al mismo instante en el tiempo (no obstante el tiempo de ejecución) y eso es todo lo que representa un java.util.Date . Ese es el resultado de Calendar.getTime() .

Sin embargo, el Calendar sí mismo sabe acerca de las zonas horarias, y eso se reflejará cuando uses Calendar.get etc. También se usará cuando uses SimpleDateFormat , donde puedes especificar un huso horario en particular.

// Specify whatever format you want - bear in mind different locales etc SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); format.setTimeZone(calendar.getTimeZone()); String text = format.format(calendar.getTime());

No está claro exactamente lo que intenta hacer, pero básicamente debe saber qué tipos son conscientes de la zona horaria y cuáles no. Es muy importante comprender que java.util.Date no tiene un formato, un sistema de calendario o una zona horaria: es solo el número de milisegundos desde la época de Unix.