Rumah  >  Artikel  >  Java  >  Bagaimanakah saya boleh menyemak sama ada rentetan padan dengan format tarikh tertentu dalam Java?

Bagaimanakah saya boleh menyemak sama ada rentetan padan dengan format tarikh tertentu dalam Java?

DDD
DDDasal
2024-11-03 00:31:29591semak imbas

How Can I Check If a String Matches a Specific Date Format in Java?

Menyemak Rentetan terhadap Format Tarikh Diperlukan dalam Java

Gambaran Keseluruhan

Menentukan sama ada rentetan yang diberikan mematuhi format tarikh yang ditentukan ialah tugas biasa dalam Java . Artikel ini membentangkan dua pendekatan berbeza untuk menangani isu ini, tanpa menggunakan penyelesaian ungkapan biasa.

Pendekatan 1: SimpleDateFormat

Kelas SimpleDateFormat menyediakan cara yang mudah untuk mencapainya. Begini cara ia boleh dilaksanakan:

<code class="java">import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

    public static void main(String[] args) {
        String format = "dd/MM/yyyy";
        String input = "20130925";
        Date date = null;

        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            date = sdf.parse(input);
            if (!input.equals(sdf.format(date))) {
                date = null;
            }
        } catch (ParseException ex) {
            // Invalid date format
        }

        boolean isValid = date != null;
        System.out.println("Is valid: " + isValid);
    }
}</code>

Dalam pendekatan ini, contoh SimpleDateFormat digunakan untuk menghuraikan rentetan input. Jika penghuraian berjaya dan tarikh yang terhasil sepadan dengan rentetan asal, input dianggap sah. Jika tidak, ia dianggap tidak sah.

Pendekatan 2 (Java 8 ): Date-Time API

Untuk Java 8 dan ke atas, pengenalan Date-Time API menawarkan yang lebih moden dan mantap pendekatan:

<code class="java">import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {

    public static void main(String[] args) {
        String format = "dd/MM/yyyy";
        String input = "20130925";
        Locale locale = Locale.ENGLISH;

        boolean isValid = isValidFormat(format, input, locale);
        System.out.println("Is valid: " + isValid);
    }

    public static boolean isValidFormat(String format, String input, Locale locale) {
        LocalDateTime ldt = null;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, locale);

        try {
            ldt = LocalDateTime.parse(input, formatter);
            String result = ldt.format(formatter);
            return result.equals(input);
        } catch (DateTimeParseException e) {
            try {
                LocalDate ld = LocalDate.parse(input, formatter);
                String result = ld.format(formatter);
                return result.equals(input);
            } catch (DateTimeParseException ex) {
                try {
                    LocalTime lt = LocalTime.parse(input, formatter);
                    String result = lt.format(formatter);
                    return result.equals(input);
                } catch (DateTimeParseException e2) {
                    // Debugging purposes
                    e2.printStackTrace();
                }
            }
        }

        return false;
    }
}</code>

Penyelesaian ini menggunakan keupayaan pemformatan lanjutan API Tarikh-Masa untuk melakukan semakan yang lebih tepat. Ia mengambil kira kemungkinan format input yang berbeza-beza, termasuk tarikh sahaja, masa sahaja dan format tarikh dan masa penuh. Kaedah isValidFormat membolehkan semakan fleksibel terhadap tempat yang berbeza.

Kesimpulan

Kedua-dua pendekatan ini menyediakan penyelesaian yang boleh dipercayai untuk menyemak sama ada rentetan mematuhi format tarikh tertentu di Java. Pilihan kaedah bergantung pada keperluan dan versi Java yang digunakan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyemak sama ada rentetan padan dengan format tarikh tertentu dalam Java?. 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