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.
Detail
Jawaban lain menggunakan kelas yang ketinggalan zaman atau salah.
Hindari kelas tanggal-waktu lama seperti java.util.Date/.Calendar. Mereka terbukti dirancang dengan buruk, membingungkan, dan merepotkan.
waktu java
The java.time kerangka datang dibangun ke Jawa 8 dan kemudian. Banyak fungsi yang di- backport ke Java 6 & 7 dan selanjutnya diadaptasi ke Android . Dibuat oleh beberapa orang yang sama seperti yang dibuat Joda-Time .
An Instantadalah momen di timeline dalam UTC dengan resolusi nanodetik . Its zaman adalah saat pertama tahun 1970 di UTC.
Dengan asumsi data input Anda adalah hitungan milidetik dari 1970-01-01T00: 00: 00Z (tidak jelas dalam Pertanyaan), maka kita dapat dengan mudah membuat contoh Instant.
Instant instant = Instant.ofEpochMilli( 1_322_018_752_992L );
instant.toString (): 2011-11-23T03: 25: 52.992Z
The Zdalam standar ISO 8601 string yang diformat adalah singkatan Zuludan sarana UTC .
Terapkan zona waktu menggunakan nama zona waktu yang tepat , untuk mendapatkan a ZonedDateTime.
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = instant.atZone( zoneId );
Lihat kode ini berjalan langsung di IdeOne.com .
Asia/Kolkata zona waktu ?
Saya menduga Anda memiliki zona waktu India yang memengaruhi kode Anda. Kami melihat di sini bahwa penyesuaian ke Asia/Kolkatazona waktu membuat waktu yang sama dengan yang Anda laporkan, 08:55yaitu lima setengah jam lebih awal dari nilai UTC kami 03:25.
2011-11-23T08: 55: 52.992 + 05: 30 [Asia / Kolkata]
Zona default
Anda dapat menerapkan zona waktu default JVM saat ini. Hati-hati karena default dapat berubah kapan saja selama runtime . Kode apa pun di utas aplikasi mana pun dalam JVM dapat mengubah default saat ini. Jika penting, minta pengguna untuk zona waktu yang diinginkan / diharapkan.
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Tentang java.time
The java.time kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan tua merepotkan warisan kelas tanggal-waktu seperti java.util.Date, Calendar, & SimpleDateFormat.
Proyek Joda-Time , sekarang dalam mode pemeliharaan , menyarankan migrasi ke kelas java.time .
Untuk mempelajari lebih lanjut, lihat Tutorial Oracle . Dan cari Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasi adalah JSR 310 .
Dengan driver JDBC yang mematuhi JDBC 4.2 atau yang lebih baru, Anda dapat bertukar objek java.time secara langsung dengan database Anda. Tidak perlu untuk string atau kelas java.sql. *.
Di mana mendapatkan kelas java.time?
Proyek ThreeTen-Extra memperpanjang java.time dengan kelas tambahan. Proyek ini adalah ajang pembuktian untuk kemungkinan penambahan masa depan ke java.time. Anda mungkin menemukan beberapa kelas berguna di sini seperti Interval, YearWeek, YearQuarter, dan lebih .