2012-04-14 19 views
5

Estoy desarrollando un software en Java.JAVA: GMT a conversión de hora local

Recibo una marca de tiempo en GMT de un servidor. El software se puede usar en cualquier parte del mundo. Ahora quiero obtener la zona horaria local donde se ejecuta el software y convertir esta hora GMT a la hora local.

Por favor dígame cómo hacer esto?

+1

planteo un calendario simple. getInstance(). getTimeZone(). getDisplayName() le proporciona la zona horaria local? –

Respuesta

0

Eche un vistazo a Joda-Time. Tiene todas las funciones relacionadas con la fecha que uno necesita

4

Asumiendo que su timestamp es o bien un Date o Number:

final DateFormat formatter = DateFormat.getDateTimeInstance(); 
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York")); 
System.out.println(formatter.format(timestamp)); 

Si su indicación de fecha y hora es String, primero debe analizarla. Encontrarás un montón de ejemplos con formato personalizado en SimpleDateFormat, un ejemplo sencillo con el formato integrado:

final DateFormat formatter = DateFormat.getDateTimeInstance(); 
formatter.setTimeZone(TimeZone.getTimeZone("GMT")); 
final Date timezone = formatter.parse("2012-04-14 14:23:34"); 
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York")); 
System.out.println(formatter.format(timezone)); 
0

Suponiendo que la hora del servidor en formato yyyy/MM/dd HH:mm:ss.SSS esto funciona:

String serverTime = "2017/12/06 21:04:07.406"; // GMT 
ZonedDateTime gmtTime = LocalDateTime.parse(serverTime, DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS")).atZone(ZoneId.of("GMT")); 
LocalDateTime localTime = gmtTime.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();