Rumah > pangkalan data > tutorial mysql > Mengapakah SimpleDateFormat.parse mengeluarkan secara berbeza daripada yang ditentukan semasa menukar cap masa UNIX kepada tarikh?

Mengapakah SimpleDateFormat.parse mengeluarkan secara berbeza daripada yang ditentukan semasa menukar cap masa UNIX kepada tarikh?

Linda Hamilton
Lepaskan: 2024-10-30 03:06:28
asal
503 orang telah melayarinya

Why does SimpleDateFormat.parse output differently than specified when converting UNIX timestamps to dates?

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan