Java convertir la marca de tiempo UTC a DateTime local
Sé que hay docenas de mensajes respondidos acerca de la conversión de hora / fecha de UTC a / de tiempo local ya, pero no me ayudó a averiguar cuál es mi problema. Mi pregunta es: ¿Por tener timestamp UTC, ¿cómo puedo obtener DateTime local? Esto es lo que tengo ahora, pero esto acaba de convertir la marca de tiempo a formato DateTime.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getDefault()); sdf.format(new Date(timestamp * 1000));
Editado: Estoy guardando la marca de tiempo UTC en la nube para que cada dispositivo (Android / iOS) pueda consultar y convertir a su zona horaria.
- Android: realizar arrastrar y soltar mediante programación
- Cómo reproducir el archivo de audio Mp3 desde el servidor
- Drag'n'Drop ConcurentModificationException
- ¿Cómo obtener la vista mientras arrastrar y soltar en android?
- Cómo cancelar View.OnDragListener en android durante la operación de arrastrar?
- Android - Restringir arrastrar y soltar a un cuadro delimitador
- ¿Cómo se puede desplazar un "punto de destino" de Android drag-shadow de su "punto de contacto"?
- ¿Cómo transformar currentTimeMillis a un formato de fecha legible?
- ¿Cómo obtener el formato de fecha seleccionado por el usuario en Android?
- Leer WCF REST fecha de android
- Cómo arrastrar el TextView al destino correcto otro TextView
- Tamaño androide de la sombra del dragshadowbuilder
- Cómo hacer Drag & Drop Button en Android
Probar esto está trabajando conmigo
public String getDateCurrentTimeZone(long timestamp) { try{ Calendar calendar = Calendar.getInstance(); TimeZone tz = TimeZone.getDefault(); calendar.setTimeInMillis(timestamp * 1000); calendar.add(Calendar.MILLISECOND, tz.getOffset(calendar.getTimeInMillis())); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date currenTimeZone = (Date) calendar.getTime(); return sdf.format(currenTimeZone); }catch (Exception e) { } return ""; }
Puedes probar esto
String DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss az" ; final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); String dateTimeString = sdf.format(new Date()); System.out.println(dateTimeString); // current UTC time long timeStamp=sdf.parse(dateTimeString).getTime(); //current UTC time in milisec Calendar cal = Calendar.getInstance(); cal.setTime(new Date(timeStamp)); cal.add(Calendar.HOUR_OF_DAY, 5); cal.add(Calendar.MINUTE, 30); System.out.println(sdf.format(cal.getTime())); // time relevant to UTC+5.30
U puede usar el tiempo de Joda para convertir local a UTC y viceversa, por ejemplo Local a UTC
DateTime dateTimeNew = new DateTime(date.getTime(), DateTimeZone.forID("Asia/Calcutta")); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); String datetimeString = dateTimeNew.toString("yyyy-MM-dd HH:mm:ss"); long milis = 0; try { milis = simpleDateFormat.parse(datetimeString).getTime(); } catch (ParseException e) { e.printStackTrace(); }
- Android: detectar el servicio reiniciado con el indicador START_REDELIVER_INTENT
- No puedo usar findViewById