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.

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(); } 

  • Cómo crear una sombra de arrastre personalizada?
  • Cómo obtener las coordenadas X, Y correctas de un DragEvent.ACTION_DROP
  • ¿Cómo restringir el arrastrar y soltar a lo largo del eje y sólo en android?
  • Arrastrar y soltar con onDraglistener animar para volver a la posición original si no se deja caer en el objetivo
  • Cómo convertir la ubicación de toque de View en la ubicación de la pantalla HTML de WebView
  • ¿Por qué estoy recibiendo este error "recurso esperado de tipo raw" en Android Studio?
  • OnDragListener no recibe DRAG_STARTED o DRAG_ENDED, pero obtiene ACTION_DROP
  • Arrastrar y soltar sin eliminar del propietario
  • Cómo arrastrar varias vistas de botón en java
  • Android: Problema de arrastrar y soltar
  • OnDragListener - ¿hay alguna biblioteca de compatibilidad para niveles de Android <11?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.