Mengesahkan Format Tarikh dalam Java
Apabila berurusan dengan rentetan input pengguna, ia menjadi penting untuk memastikan tarikh yang diberikan mematuhi syarat tertentu format. Begini cara anda boleh mengesahkan format tarikh dalam Java dengan cekap:
Nota Mengenai Pengendalian Pengecualian
Menghuraikan rentetan kepada nilai tarikh boleh menimbulkan cabaran jika format tidak diketahui. Oleh itu, adalah penting untuk mengendalikan pengecualian dengan anggun dalam senario sedemikian.
Pendekatan Menggunakan SimpleDateFormat
Satu kaedah mudah melibatkan penggunaan SimpleDateFormat:
Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat(format); date = sdf.parse(value); if (!value.equals(sdf.format(date))) { date = null; } } catch (ParseException ex) { // Handle exceptions here } if (date == null) { // Invalid date format } else { // Valid date format }
Ini approach membandingkan rentetan asal kepada versi terformat tarikh yang dihuraikan. Jika ia sepadan, format tarikh adalah sah.
Contoh:
Sebagai contoh, pertimbangkan untuk menyemak sama ada rentetan "20130925" adalah dalam format dd/MM/yyyy:
isValidFormat("dd/MM/yyyy", "20130925") // Returns false
Penyelesaian Dipertingkat untuk Pelbagai Format
Dengan Java 8 dan ke atas, anda boleh memanfaatkan API DateTime. Ini membolehkan anda mengesahkan format tarikh dan masa yang berbeza:
LocalDateTime ldt = null; DateTimeFormatter fomatter = DateTimeFormatter.ofPattern(format, locale); try { ldt = LocalDateTime.parse(value, fomatter); String result = ldt.format(fomatter); return result.equals(value); } catch (DateTimeParseException e) { // Attempt parsing as date or time only } return false;
Pendekatan ini mengendalikan berbilang format (tarikh sahaja, tarikh dengan masa, masa sahaja) dengan mencuba pelbagai penghuraian dan membandingkan hasilnya.
Contoh Kemas Kini:
Menggunakan penyelesaian yang dikemas kini:
isValidFormat("dd/MM/yyyy", "20130925") // Returns false isValidFormat("dd/MM/yyyy", "25/09/2013") // Returns true isValidFormat("dd/MM/yyyy", "25/09/2013 12:13:50") // Returns false
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Format Tarikh di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!