Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mengesahkan Format Rentetan Tarikh di Java tanpa Menghuraikan ke Objek Tarikh?

Mary-Kate Olsen
Lepaskan: 2024-11-06 07:22:02
asal
956 orang telah melayarinya

How to Validate a Date String Format in Java without Parsing to a Date Object?

Java: Menyemak Format Tarikh Rentetan terhadap Keperluan Tertentu

Soalan:

Bagaimanakah saya boleh menentukan sama ada rentetan yang diberikan mengikut format tarikh tertentu dalam Java? Saya mahu mengelak daripada menukar rentetan kepada objek tarikh dan hanya fokus pada mengesahkan formatnya.

Jawapan:

Java 8 :

Gunakan kelas LocalDateTime, LocalDate dan LocalTime daripada API tarikh dan masa Java 8 untuk pengesahan format yang komprehensif.

Kod:

<code class="java">public static boolean isValidFormat(String format, String value, Locale locale) {
    LocalDateTime ldt = null;
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, locale);

    try {
        ldt = LocalDateTime.parse(value, formatter);
        String result = ldt.format(formatter);
        return result.equals(value);
    } catch (DateTimeParseException e) {
        try {
            LocalDate ld = LocalDate.parse(value, formatter);
            String result = ld.format(formatter);
            return result.equals(value);
        } catch (DateTimeParseException exp) {
            try {
                LocalTime lt = LocalTime.parse(value, formatter);
                String result = lt.format(formatter);
                return result.equals(value);
            } catch (DateTimeParseException e2) {
                // Handle exceptions for debugging purposes
            }
        }
    }

    return false;
}</code>
Salin selepas log masuk

Contoh Penggunaan:

<code class="java">System.out.println("isValid - dd/MM/yyyy with 20130925 = " + isValidFormat("dd/MM/yyyy", "20130925", Locale.ENGLISH));
System.out.println("isValid - dd/MM/yyyy with 25/09/2013 = " + isValidFormat("dd/MM/yyyy", "25/09/2013", Locale.ENGLISH));
System.out.println("isValid - dd/MM/yyyy with 25/09/2013 12:13:50 = " + isValidFormat("dd/MM/yyyy", "25/09/2013  12:13:50", Locale.ENGLISH));
System.out.println("isValid - yyyy-MM-dd with 2017-18--15 = " + isValidFormat("yyyy-MM-dd", "2017-18--15", Locale.ENGLISH));</code>
Salin selepas log masuk

Output:

isValid - dd/MM/yyyy with 20130925 = false
isValid - dd/MM/yyyy with 25/09/2013 = true
isValid - dd/MM/yyyy with 25/09/2013 12:13:50 = false
isValid - yyyy-MM-dd with 2017-18--15 = false
Salin selepas log masuk

Pra-Java 8:

Untuk versi Java yang lebih awal, gunakan SimpleDateFormat untuk mengesahkan format.

Kod:

<code class="java">public static boolean isValidFormat(String format, String value) {
    Date date = null;
    try {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        date = sdf.parse(value);
        if (!value.equals(sdf.format(date))) {
            date = null;
        }
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
    return date != null;
}</code>
Salin selepas log masuk

Contoh Penggunaan dan Output:

<code class="java">System.out.println("isValid - dd/MM/yyyy with 20130925 = " + isValidFormat("dd/MM/yyyy", "20130925"));
System.out.println("isValid - dd/MM/yyyy with 25/09/2013 = " + isValidFormat("dd/MM/yyyy", "25/09/2013"));
System.out.println("isValid - dd/MM/yyyy with 25/09/2013 12:13:50 = " + isValidFormat("dd/MM/yyyy", "25/09/2013  12:13:50"));</code>
Salin selepas log masuk
isValid - dd/MM/yyyy with 20130925 = false
isValid - dd/MM/yyyy with 25/09/2013 = true
isValid - dd/MM/yyyy with 25/09/2013 12:13:50 = false
Salin selepas log masuk

Kedua-dua penyelesaian kembali benar jika rentetan sepadan dengan format yang ditentukan dan palsu sebaliknya, menyediakan kaedah yang boleh dipercayai untuk mengesahkan format tarikh dalam Java.

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Format Rentetan Tarikh di Java tanpa Menghuraikan ke Objek 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