тл; д-р
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.
Деталі
В інших відповідях використовуються застарілі або неправильні класи.
Уникайте старих занять з датами, наприклад, java.util.Date/.Calendar. Вони виявилися погано розробленими, заплутаними та клопіткими.
java.time
java.time рамки поставляється вбудований в Java 8 і пізніших версій. Значна частина функціональних можливостей підтримується Java 6 та 7 та надалі адаптується до Android . Зроблено деякими тими ж людьми, що і Joda-Time .
InstantЦе момент на шкалі часу в UTC з дозволом наносекунд . Його епоха - це перший момент 1970 року в UTC.
Якщо припустити, що ваші вхідні дані - це кількість мілісекунд від 1970-01-01T00: 00: 00Z (не ясно в запитанні), то ми можемо легко інстанціювати Instant.
Instant instant = Instant.ofEpochMilli( 1_322_018_752_992L );
instant.toString (): 2011-11-23T03: 25: 52.992Z
У Zцьому стандарті ISO 8601 рядку відформатованого коротке значення Zuluозначає UTC .
Застосуйте часовий пояс, використовуючи відповідну назву часового поясу , щоб отриматиZonedDateTime .
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = instant.atZone( zoneId );
Дивіться це код, який працює на сайті IdeOne.com .
Asia/Kolkata часовий пояс ?
Я здогадуюсь, у вас був часовий пояс Індії, що впливає на ваш код. Ми бачимо тут, що при введенні в Asia/Kolkataчасовий пояс відображається той самий час дня, що й у вашому звіті, на 08:55п’ять з половиною годин попереду нашого значення UTC 03:25.
2011-11-23T08: 55: 52.992 + 05: 30 [Азія / Колката]
Зона за замовчуванням
Ви можете застосувати поточний часовий пояс JVM за замовчуванням . Слідкуйте за тим, що за замовчуванням можна змінити будь-який момент під час виконання . Будь-який код у будь-якій нитці будь-якого додатка в рамках JVM може змінити поточний типовий стандарт. Якщо важливо, запитайте у користувача бажаний / очікуваний часовий пояс.
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Про java.time
Java.time каркас вбудований в Java 8 і пізніших версій. Ці класи витісняти неприємні старі застарілі класи дати і часу , такі як java.util.Date, Calendar, і SimpleDateFormat.
Проект Joda-Time , який зараз знаходиться в режимі обслуговування , радить перейти до класів java.time .
Щоб дізнатися більше, дивіться навчальний посібник Oracle . І шукайте переповнення стека за багатьма прикладами та поясненнями. Специфікація - JSR 310 .
Якщо драйвер JDBC відповідає JDBC 4.2 або пізнішої версії, ви можете обмінюватися об'єктами java.time безпосередньо зі своєю базою даних. Не потрібно для рядків або класів java.sql. *.
Де отримати класи java.time?
Проект ThreeTen-Extra розширює java.time додатковими класами. Цей проект є доказом можливих майбутніх доповнень до java.time. Ви можете знайти деякі корисні класи тут , такі як Interval, YearWeek, YearQuarter, і більш .