SimpleDateFormatter.parse Percanggahan Format Output
Apabila cuba menukar cap masa UNIX kepada format tarikh tertentu menggunakan SimpleDateFormat, pengguna mungkin menghadapi ketidakkonsistenan antara output yang diformat dan dihuraikan.
Satu sebab untuk percanggahan ini ialah potensi zon waktu yang tidak sepadan. Pastikan zon waktu SimpleDateFormat sepadan dengan output yang dijangkakan. Selain itu, sahkan bahawa cap masa zaman diwakili dalam milisaat, seperti yang diperlukan oleh pembina Date.
Penyelesaian Cadangan:
Untuk mengelakkan isu pemformatan yang berpotensi dan memastikan keserasian pangkalan data, ia disyorkan untuk menghantar objek tarikh terus ke MySQL dan bukannya rentetan. Gunakan kelas java.time, seperti LocalDateTime, untuk mewakili tarikh dan masa.
Berikut ialah coretan kod yang dikemas kini:
<code class="java">String ep = "a1527069600"; long epoch = Long.parseLong(ep.substring(1)); Instant instant = Instant.ofEpochSecond(epoch); LocalDateTime ldt = instant.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime(); PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)"); ps.setObject(1, ldt);</code>
Pendekatan ini memastikan tarikh diformat mengikut masa yang ditentukan zon dan disimpan sebagai objek dalam pangkalan data, menghapuskan potensi ralat pemformatan.
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, memfokuskan pada isu teras dan penyelesaian: Pilihan 1 (Langsung dan Berfokuskan Masalah): * Mengapakah SimpleDateFormat.parse menghasilkan output yang tidak konsisten apabila menukar masa UNIX. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!