妥当な日付かどうかチェックする


GAEでdatastoreにputする前に日付が正しい値かどうかチェックしたくて、妥当な日付かどうかチェックする関数を調べてみました。

from datetime import date

def validate_date(y, m, d):
  try:
    date(int(y), int(m), int(d))
    return True
  excpet ValueEror:
    return False


次の方法ではうまくいきません。

from datetime import date

def validate_date(y, m, d):
  if date(int(y), int(m), int(d)):
    return True
  else:
    return False


日付が正しくなければdate関数はValueErrorを返します。
ValueErrorはBooleanではないので、誤った日付のときにFalseを返せず、if文で判定する前にエラーが発生するので最初のソースのように例外処理を行う必要があります。