Java:根據指定要求檢查字符串的日期格式
問題:
如何確定給定的字串是否遵循Java 中的特定日期格式?我想避免將字串轉換為日期對象,而只專注於驗證其格式。
答案:
Java 8 :
利用Java 8 日期和時間API 中的LocalDateTime、LocalDate 和進行全面的格式驗證。
程式碼:
<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>
使用範例:
<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>
使用範例:
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
輸出: 🎜>
Java 8 之前的版本:
對於早期版本的Java,請使用SimpleDateFormat 驗證格式。
<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>程式碼:
<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>使用範例與輸出:
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如果字串與指定格式匹配,則兩種解決方案都會傳回true,否則傳回false,為Java 中驗證日期格式提供可靠的方法。
以上是如何在 Java 中驗證日期字串格式而不解析為日期物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!