tl; dr
Anda meminta sepersekian detik waktu saat ini sebagai jumlah milidetik ( tidak dihitung dari masa).
Instant.now() // Get current moment in UTC, then…
.get( ChronoField.MILLI_OF_SECOND ) // interrogate a `TemporalField`.
2017-04-25T03: 01: 14.113Z → 113
- Dapatkan pecahan sekon dalam nanodetik (milyaran).
- Bagilah dengan seribu untuk dipotong menjadi milidetik (ribuan).
Lihat kode ini ditayangkan langsung di IdeOne.com .
Menggunakan java.time
Cara modern adalah dengan kelas java.time.
Tangkap momen saat ini dalam UTC.
Instant.now()
Gunakan Instant.get
metode untuk menginterogasi nilai a TemporalField
. Dalam kasus kami, yang TemporalField
kami inginkan adalah ChronoField.MILLI_OF_SECOND
.
int millis = Instant.now().get( ChronoField.MILLI_OF_SECOND ) ; // Get current moment in UTC, then interrogate a `TemporalField`.
Atau lakukan matematika sendiri.
Kemungkinan besar Anda menanyakan ini untuk zona waktu tertentu. Sepersekian detik kemungkinan besar sama dengan Instant
tetapi ada begitu banyak anomali dengan zona waktu, saya ragu untuk membuat asumsi itu.
ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) ;
Interogasi untuk pecahan detik. Pertanyaan menanyakan milidetik , tetapi kelas java.time menggunakan resolusi nanodetik yang lebih halus . Itu berarti jumlah nanodetik akan berkisar dari 0 hingga 999.999.999.
long nanosFractionOfSecond = zdt.getNano();
Jika Anda benar-benar menginginkan milidetik, potong data yang lebih halus dengan membaginya dengan satu juta. Misalnya, setengah detik adalah 500.000.000 nanodetik dan juga 500 milidetik.
long millis = ( nanosFractionOfSecond / 1_000_000L ) ; // Truncate nanoseconds to milliseconds, by a factor of one million.
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. Spesifikasinya adalah JSR 310 .
Di mana mendapatkan kelas java.time?
- Java SE 8 dan SE 9 dan yang lebih baru
- Bawaan.
- Bagian dari Java API standar dengan implementasi yang dibundel.
- Java 9 menambahkan beberapa fitur dan perbaikan kecil.
- Java SE 6 dan SE 7
- Sebagian besar fungsionalitas java.time di-back-port ke Java 6 & 7 di ThreeTen-Backport .
- Android
Proyek ThreeTen-Extra memperluas java.time dengan kelas tambahan. Proyek ini adalah tempat pembuktian untuk kemungkinan penambahan java.time di masa mendatang. Anda mungkin menemukan beberapa kelas berguna di sini seperti Interval
, YearWeek
, YearQuarter
, dan lebih .
[0, 999]
, benar? @thinksteep membaca kalimat terakhir.