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.
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.
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.
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!