Saya mencoba untuk mengkonversi nilai panjang ( jumlah milidetik berlalu dari 1/1/1970 yaitu Epoch ) ke waktu format h:m:s:ms
.
Nilai panjang yang saya gunakan sebagai cap waktu, saya dapatkan dari bidang timestamp
acara logging dari log4j.
Sejauh ini saya sudah mencoba yang berikut dan gagal:
logEvent.timeStamp/ (1000*60*60)
TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
tapi saya mendapatkan nilai yang salah:
1289375173771 for logEvent.timeStamp
358159 for logEvent.timeStamp/ (1000*60*60)
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
Bagaimana saya melakukannya?
SimpleDateFormat
, gunakan impor sebagai berikut:import java.text.*;
java.util.Date
,java.util.Calendar
, danjava.text.SimpleDateFormat
sekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 dan kemudian. Lihat Tutorial oleh Oracle . Lihat: stackoverflow.com/a/4142428/642706sumber
Saya akan menunjukkan kepada Anda tiga cara untuk (a) mendapatkan bidang menit dari nilai yang panjang, dan (b) mencetaknya menggunakan format Tanggal yang Anda inginkan. Satu menggunakan java.util.Calendar , yang lain menggunakan Joda-Time , dan yang terakhir menggunakan kerangka java.time yang dibangun ke dalam Java 8 dan yang lebih baru.
Kerangka java.time menggantikan kelas tanggal-waktu yang dibundel lama, dan terinspirasi oleh Joda-Time, didefinisikan oleh JSR 310, dan diperpanjang oleh proyek ThreeTen-Extra.
Kerangka java.time adalah cara untuk pergi ketika menggunakan Java 8 dan yang lebih baru. Kalau tidak, seperti Android, gunakan Joda-Time. Kelas java.util.Date/.Calendar terkenal merepotkan dan harus dihindari.
java.util.Date & .Calendar
Joda-Time
Keluaran:
waktu java
sumber
DateTimeZone
objek. Seperti ini:new DateTime( timestamp, DateTimeZone.forID( "America/Montreal" ) )
Dimungkinkan untuk menggunakan apache commons (commons-lang3) dan kelas DurationFormatUtils nya.
Sebagai contoh:
Semoga bisa membantu ...
sumber
sumber
TimeUnit.MILLISECONDS.toSeconds()
, misalnya, mengonversi milidetik ke durasi yang sama dalam detik atau sisa detik setelah mengurangi jam dan menit? Solusinya membutuhkan yang terakhir.sumber
Perbuatan
akan memberi Anda jam, bukan menit. Mencoba:
dan Anda akan berakhir dengan jawaban yang sama dengan
sumber
Coba ini:
sumber
sumber