Apabila bekerja dengan data cap masa, keperluan sering timbul untuk menukar integer panjang yang mewakili bilangan milisaat sejak the Epoch (1 Januari 1970) ke dalam format yang lebih mudah dibaca dan bermaklumat, seperti "h:m:s:ms" (jam:minit:saat:milisaat).
Dalam konteks log4j, mendapatkan semula cap masa daripada peristiwa pengelogan boleh dicapai melalui medan logEvent.timeStamp. Walau bagaimanapun, menukar cap masa ini kepada masa yang diformatkan boleh mencabar.
Pendekatan yang Salah:
Percubaan untuk menukar milisaat secara langsung menggunakan operasi seperti membahagi dengan bilangan saat dalam sejam atau menggunakan kaedah TimeUnit.MILLISECONDS.toMinutes() akan menghasilkan keputusan yang salah, kerana proses penukaran melibatkan lebih daripada aritmetik mudah.
Penyelesaian Betul:
Kepada menukar cap masa milisaat kepada rentetan masa yang diformat dengan tepat, kami boleh menggunakan keupayaan pemformatan tarikh dan masa terbina dalam Java:
Date date = new Date(logEvent.timeStamp); DateFormat formatter = new SimpleDateFormat("HH:mm:ss.SSS"); formatter.setTimeZone(TimeZone.getTimeZone("UTC")); String dateFormatted = formatter.format(date);
Contoh ini menunjukkan proses penukaran:
Pilihan Pemformatan Lain:
API Java menyediakan pelbagai corak tarikh SimpleDateFormat untuk menyokong gaya pemformatan yang berbeza. Berikut ialah beberapa pilihan biasa:
Pattern | Output |
---|---|
"h:m:s:ms" | 03:34:56:123 |
"EEE, MMM d, yyyy hh:mm:ss a" | Wed, Mar 17, 2023 03:34:56 PM |
"yyyy-MM-dd HH:mm:ss.SSS" | 2023-03-17 15:34:56.123 |
Atas ialah kandungan terperinci Bagaimana untuk Menukar Cap Masa Milisaat kepada Rentetan Masa Boleh Dibaca Manusia di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!