My開発メモ

Javaでの日付チェック

書いては忘れるので、メモする。

java.timeパッケージを使った方法

/**
 * java.time.LocalDateによるチェック
 * @param value (例) "2016/09/31"
 */
public boolean isDate(String value) {
  DateTimeFormatter fmt =
    DateTimeFormatter.ofPattern("uuuu/MM/dd")
                     .withResolverStyle(ResolverStyle.STRICT);
  try {
    LocalDate.parse(value, fmt);
    return true;
  } catch(DateTimeParseException e) {
    return false;
  }
}

java.util.Dateによる方法

/**
 * java.util.Dateによるチェック
 * @param value (例) "2016/09/31"
 */
public boolean isDate(String value) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
  sdf.setLenient(false); // 日付チェックを厳密にする
  try{
    sdf.parse(params);
    return true;
  }catch(ParseException e){
    return false;
  }
}

あるいは次のように、生成した日付と一致するかどうかを調べる。

public boolean isDate(String value) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
  sdf.setLenient(false); // 日付チェックを厳密にする
  try{
    Date parseDate = sdf.parse(value);
    return sdf.format(parseDate).equals(value);
  }catch(ParseException e){
    return false;
  }
}

参考

カテゴリー: Java, memo

タグ: Date, DateTimeFormatter, LocalDate, SimpleDateFormat, 日付チェック

カウント: 204