Java11 SimpleDateFormatで文字列の日付を厳密にチェックをする

環境
Java SE 11
Eclipse 4.26.0

書式
DateFormat df = new SimpleDateFormat(“yyyy/MM/dd");
//厳密にチェックする
df.setLenient(false);
String 変数名 = df.format(df.parse(文字列));
df.parseでParseExceptionがメッセージをThrowする

使用例

package com.arkgame.study;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class ArktestDemo {

      public static void main(String[] args) {

            String s1 = "2023/02/29";
            System.out.println("日付1のチェック結果: " + isDate(s1));

            String s2 = "2023/01/29";
            System.out.println("日付2のチェック結果: " + isDate(s2));
      }

      public static boolean isDate(String str) {
            boolean res = false;
            try {
                  DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
                  df.setLenient(false); //これで厳密にチェックしてくれるようになる

                  String s2 = df.format(df.parse(str)); //df.parseでParseExceptionがThrowされる
                  System.out.println(s2);
                  res = true;
            } catch (ParseException p) {
                  res = false;
                  //p.printStackTrace();
            }
            return res;
      }
}

実行結果
日付1のチェック結果: false
2023/01/29
日付2のチェック結果: true

Java

Posted by arkgame