Rumah >Java >javaTutorial >Mengapa SimpleDateFormat Membuang 'Tarikh Tidak Dapat Dihuraikan'?

Mengapa SimpleDateFormat Membuang 'Tarikh Tidak Dapat Dihuraikan'?

Susan Sarandon
Susan Sarandonasal
2025-01-01 02:22:09327semak imbas

Why Does SimpleDateFormat Throw

Tarikh yang tidak boleh dihuraikan dengan SimpleDateFormat: Tentukan Tempat atau Gunakan DateTimeFormatter

Masalah:
W untuk menghuraikan tarikh, anda mungkin menghadapi ralat "java.text.ParseException: Tarikh tidak boleh dihuraikan," terutamanya apabila tempattempat tidak ditentukan.

Penjelasan:
SimpleDateFormat memerlukan tempattempat untuk menghuraikan tarikh dengan betul. Jika tiada yang dinyatakan, ia menggunakan tempat lalai sistem, yang mungkin tidak sepadan dengan format yang dihuraikan.

Penyelesaian:

  1. Sentiasa nyatakan locale: Gunakan kelebihan pembina SimpleDateFormat yang menerima hujah Locale. Contohnya:
SimpleDateFormat dtfmt = new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.ENGLISH);
  1. Gunakan DateTimeFormatter API moden:
  • DateTimeFormatter ialah API pilihan untuk pemformatan dan menghuraikan tarikh dan masa.
  • Ia memberikan lebih fleksibiliti dan kawalan ke atas pemformatan, termasuk keupayaan untuk menentukan tempat.

Demo dengan DateTimeFormatter:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "24 Oct 2016 7:31 pm";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d MMM uuuu h:m a").withLocale(Locale.ENGLISH);
        LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
        System.out.println(ldt); // prints 2016-10-24T19:31
    }
}

Nota:

  • tempat lalai yang ditentukan oleh DateTimeFormatter menggunakan tempat semasa sistem.
  • Sentiasa tentukan secara eksplisit tempat itu untuk mengelakkan isu penghuraian yang berpotensi.

Atas ialah kandungan terperinci Mengapa SimpleDateFormat Membuang 'Tarikh Tidak Dapat Dihuraikan'?. 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