Pythonで妥当な日付かどうかチェック

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

[code lang="python"]

from datetime import date

def validate_date(y, m, d):

try:

date(int(y), int(m), int(d))

return True

excpet ValueEror:

return False

[/code]

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

[code lang="python"]

from datetime import date

def validate_date(y, m, d):

if date(int(y), int(m), int(d)):

return True

else:

return False

[/code]

日付が正しくなければdate関数はValueErrorを返します。

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