SimpleDateFormatter.parse Output Berbeza Daripada Dinyatakan
Apabila menukar cap masa UNIX kepada tarikh menggunakan SimpleDateFormat, anda mungkin menghadapi percanggahan antara format yang ditentukan dan output.
Dalam contoh yang diberikan, matlamatnya ialah untuk menukar cap masa UNIX ("a1527069600") kepada tarikh dalam format "dd/MM/yyyy hh:mm:ss a". Walau bagaimanapun, menggunakan SimpleDateFormatter.format diikuti oleh SimpleDateFormatter.parse menghasilkan output yang berbeza.
Punca Percanggahan
Percanggahan berlaku kerana SimpleDateFormatter.parse menjangkakan rentetan dalam tepat format yang ditentukan semasa instantiasi ("dd/MM/yyyy hh:mm:ss a"). Dalam kes ini, SimpleDateFormatter.format mengeluarkan tarikh dalam format yang berbeza daripada format input yang dijangkakan, menyebabkan operasi parse gagal.
Penyelesaian
Untuk mengelakkan isu ini , adalah disyorkan untuk tidak menghantar rentetan tarikh ke pangkalan data MySQL. Sebaliknya, gunakan objek tarikh. API tarikh dan masa Java moden, java.time, menyediakan kelas seperti LocalDateTime yang memudahkan pengendalian tarikh.
Contoh:
<code class="java">String ep = "a1527069600"; long epoch = Long.parseLong(ep.substring(1)); Instant inst = Instant.ofEpochSecond(epoch); LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime(); System.out.println(ldt.toString()); // Output: 2018-05-23T15:30 PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)"); ps.setObject(1, ldt);</code>
Kod ini menukar UNIX cap waktu kepada LocalDateTime, yang boleh dimasukkan terus ke dalam pangkalan data MySQL.
Kesimpulan:
Dengan menggunakan java.time dan menghantar objek tarikh dan bukannya rentetan kepada MySQL, anda boleh menghapuskan isu pemformatan dan memastikan ketepatan penukaran tarikh.
Atas ialah kandungan terperinci Mengapakah SimpleDateFormat.parse mengeluarkan secara berbeza daripada yang ditentukan semasa menukar cap masa UNIX kepada tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!