Rumah  >  Artikel  >  pangkalan data  >  Mengapa SimpleDateFormat.parse Mengembalikan Format Berbeza Daripada Yang Ditentukan?

Mengapa SimpleDateFormat.parse Mengembalikan Format Berbeza Daripada Yang Ditentukan?

Susan Sarandon
Susan Sarandonasal
2024-10-27 16:10:02910semak imbas

 Why Does SimpleDateFormat.parse Return a Different Format Than Specified?

SimpleDateFormatter.parse Memberi Output dalam Format Berbeza daripada Yang Ditentukan

Soalan ini timbul apabila cuba menukar cap masa UNIX kepada tarikh dengan tertentu format menggunakan SimpleDateFormat. Walaupun menetapkan format yang diingini, hasil sdf.parse muncul dalam format yang berbeza.

Penyelesaian:

Untuk menyelesaikan isu ini, adalah disyorkan untuk mengelak daripada melepasi tarikh sebagai rentetan ke pangkalan data MySQL. Sebaliknya, ia lebih selamat dan lebih ringkas untuk menghantar objek tarikh, terutamanya kejadian daripada API tarikh dan masa Java (java.time). Objek LocalDateTime sesuai dalam kes ini:

<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();</code>

Untuk storan pangkalan data, LocalDateTime mewakili datetime dalam format '2018-05-23T15:30'.

Untuk mengekalkan LocalDateTime dalam Pangkalan data MySQL:

<code class="java">PreparedStatement ps = myDatabaseConnection.prepareStatement(
                "insert into my_table (my_date_time) values (?)");
    ps.setObject(1, ldt);</code>

Alternatif untuk Nilai UTC:

Jika nilai pangkalan data harus disimpan dalam UTC (Universal Time Coordinated), gunakan penukaran berikut:

<code class="java">LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();</code>

Kelebihan Menggunakan java.time:

  • Melegakan kebimbangan pemformatan
  • Menyediakan API tarikh dan masa yang moden dan komprehensif

Atas ialah kandungan terperinci Mengapa SimpleDateFormat.parse Mengembalikan Format Berbeza Daripada Yang Ditentukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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