tl; dr
Instant.ofEpochMilli( 1_322_018_752_992L ) // Parse count of milliseconds-since-start-of-1970-UTC into an `Instant`.
.atZone( ZoneId.of( "Africa/Tunis" ) ) // Assign a time zone to the `Instant` to produce a `ZonedDateTime` object.
Detalles
Las otras respuestas usan clases pasadas de moda o incorrectas.
Evite las antiguas clases de fecha y hora, como java.util.Date/.Calendar. Han demostrado ser pobremente diseñados, confusos y problemáticos.
java.time
El framework java.time viene integrado en Java 8 y versiones posteriores. Gran parte de la funcionalidad es compatible con Java 6 y 7 y se adapta aún más a Android . Hecho por algunas de las mismas personas que habían hecho Joda-Time .
Un Instantes un momento en la línea de tiempo en UTC con una resolución de nanosegundos . Su época es el primer momento de 1970 en UTC.
Suponiendo que sus datos de entrada son un recuento de milisegundos desde 1970-01-01T00: 00: 00Z (no está claro en la pregunta), entonces podemos instanciar fácilmente un Instant.
Instant instant = Instant.ofEpochMilli( 1_322_018_752_992L );
instant.toString (): 2011-11-23T03: 25: 52.992Z
El Zen esa norma ISO 8601 cadena con formato es la abreviatura de Zuluy significa UTC .
Aplique una zona horaria utilizando un nombre de zona horaria adecuado para obtener a ZonedDateTime.
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = instant.atZone( zoneId );
Vea este código en vivo en IdeOne.com .
Asia/Kolkata zona horaria ?
Supongo que su zona horaria de India afecta su código. Vemos aquí que ajustarse a la Asia/Kolkatazona horaria representa la misma hora del día que informa, 08:55que es cinco horas y media antes de nuestro valor UTC 03:25.
2011-11-23T08: 55: 52.992 + 05: 30 [Asia / Kolkata]
Zona predeterminada
Puede aplicar la zona horaria predeterminada actual de la JVM. Tenga en cuenta que el valor predeterminado puede cambiar en cualquier momento durante el tiempo de ejecución . Cualquier código en cualquier subproceso de cualquier aplicación dentro de la JVM puede cambiar el valor predeterminado actual. Si es importante, solicite al usuario su zona horaria deseada / esperada.
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Sobre java.time
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como java.util.Date, Calendar, y SimpleDateFormat.
El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .
Para obtener más información, consulte el Tutorial de Oracle . Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .
Con un controlador JDBC que cumpla con JDBC 4.2 o posterior, puede intercambiar objetos java.time directamente con su base de datos. No necesita cadenas ni clases java.sql. *.
¿Dónde obtener las clases java.time?
- Java SE 8 , Java SE 9 y posterior
- Incorporado.
- Parte de la API Java estándar con una implementación integrada.
- Java 9 agrega algunas características menores y correcciones.
- Java SE 6 y Java SE 7
- Gran parte de la funcionalidad java.time se transfiere a Java 6 y 7 en ThreeTen-Backport .
- Androide
- Versiones posteriores de las implementaciones de paquetes de Android de las clases java.time.
- Para principios de Android, el ThreeTenABP proyecto se adapta ThreeTen-Backport (mencionado anteriormente). Ver Cómo utilizar ThreeTenABP ... .
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuarter, y más .