Cómo convertir una hora de GMT a EST
Tengo un Date & time "20140508063630" en formato (yyyyMMddHHmmss). Quiero convertir este tiempo en zona horaria EST. ¿Cómo puedo hacerlo? Si hay alguna API para esta conversión, avísame. Gracias por adelantado.
- Android sincronizado onSensorChanged?
- Cómo hacer que la actividad de fondo sea más pequeña al abrir el cajón de navegación?
- Android cómo actualizar, pero conserva la información de la base de datos
- Tengo una ConnectException que no se está cogiendo por alguna razón
- ¿Cómo cambiar el tema de PreferenceActivity?
- Grilla 2D Array en lienzo de dibujo
- Eliminar los corchetes de un conjunto de listas a una vista de texto?
- ¿El cliente REST de Android, Sample?
- Cómo obtener el número de serie de Glass por programa
- Android obtiene el tipo de vista
- JNI: Del código C a Java y JNI
- Android - Hashtag en TextView
- Diferentes firmas de apk en Android
try { DateFormat gmtFormat = new SimpleDateFormat(); TimeZone estTime = TimeZone.getTimeZone("EST"); gmtFormat.setTimeZone(estTime); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); System.out.println("EST Time: " + gmtFormat.format(sdf.parse("20140508063630"))); } catch (ParseException e) { e.printStackTrace(); }
Puesto que has etiquetado tu pregunta java-time, mereces una respuesta java.time
.
String dateAndTime = "20140508063630"; DateTimeFormatter parseFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); ZonedDateTime coralHarbourDateTime = LocalDateTime.parse(dateAndTime, parseFormatter) .atOffset(ZoneOffset.UTC) .atZoneSameInstant(ZoneId.of("America/Coral_Harbour")); System.out.println(coralHarbourDateTime);
Esto imprime
2014-05-08T01:36:30-05:00[America/Coral_Harbour]
Hay un número de cosas a notar sin embargo:
- También etiquetaste tu pregunta android.
java.time
parece estar llegando a Android, pero como de la escritura no está en la mayoría de los teléfonos con Android. No te desesperes, sin embargo, obtener el ThreeTenABP y utilizar las clases en Android. - Las clases
SimpleDateFormat
ySimpleDateFormat
utilizadas en las otras respuestas están muy anticuadas, por lo que si su aplicación de Android está realizando algún trabajo con fechas y / o horas y / o zonas horarias, recomiendo ThreeTenABP y las clases modernas como el programador amigable y el futuro camino a seguir. - Usted pidió zona horaria EST y luego nos dio una fecha de 8 de mayo, que es en la hora de verano (DST) parte del año. En primer lugar, las abreviaturas de tres letras son peligrosas por ser ambiguas y en este caso no es una zona horaria completa, así que evítelas donde puedas. He resuelto el problema utilizando America / Coral_Harbour desde que leí que este lugar en particular utiliza EST todo el año, sin horario de verano. Si esto no era lo que usted pensaba, por favor proporcione una ubicación diferente. Si en cambio uso América / Montreal,
2014-05-08T02:36:30-04:00[America/Montreal]
, por ejemplo, con la zona horaria compensada -4 en lugar de -5.
Cómo utilizar ThreeTenABP en el proyecto Android
Código siguiente para convertir la fecha de un huso horario a otro huso horario con cualquier formato de fecha
{ String parsedDate = null; try { SimpleDateFormat dbDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); dbDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); Date date = dbUtcDateFormat.parse("20140508063630"); SimpleDateFormat userDateFormat = new SimpleDateFormat(yyyyMMddHHmmss); userDateFormat.setTimeZone(TimeZone.getTimeZone("EST")); parsedDate = userDateFormat.format(date); } catch (Throwable t) { logger.warn("Date Parse Faied : ", t); } return parsedDate; }
- No se puede encontrar el paquete de soporte técnico en el SDK de Android
- Vista personalizada de Android con los atributos personalizados