Java: 지정된 요구 사항에 따라 문자열의 날짜 형식 확인
질문:
주어진 문자열이 Java의 특정 날짜 형식을 따르는지 어떻게 확인할 수 있습니까? 문자열을 날짜 객체로 변환하는 것을 피하고 형식 유효성 검사에만 집중하고 싶습니다.
답변:
Java 8:
포괄적인 형식 검증을 위해 Java 8 날짜 및 시간 API의 LocalDateTime, LocalDate 및 LocalTime 클래스를 활용하세요.
코드:
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!