在python中,如何检查日期是否有效?

2024-04-25 06:48:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一种日历web应用程序

我已经用HTML设置了下面的表单

<form action='/event' method='post'>
Year ("yyyy"):  <input type='text' name='year' />
Month ("mm"):  <input type='text' name='month' />
Day ("dd"):  <input type='text' name='day' />
Hour ("hh"):  <input type='text' name='hour' />
Description:  <input type='text' name='info' />
             <input type='submit' name='submit' value='Submit'/>
</form>

然后,用户的输入被提交到cherrypy服务器中

我想知道,有没有办法检查用户输入的日期是否有效?

显然我可以写很多if语句,但是有没有内置函数可以检查这个呢?

谢谢


Tags: textnameformeventweb应用程序表单input
3条回答

您可以尝试使用datetime并处理异常以确定有效/无效日期: 示例:http://codepad.org/XRSYeIJJ

import datetime
correctDate = None
try:
    newDate = datetime.datetime(2008,11,42)
    correctDate = True
except ValueError:
    correctDate = False
print(str(correctDate))

你可以试试

import datetime
datetime.datetime(year=year,month=month,day=day,hour=hour)

这将消除诸如“月”12、“小时”23、不存在的闰年(在非闰年,月=2的最大值为28,否则为29,其他月份的最大值为30或31天)(在错误时抛出ValueError异常)

也可以尝试将其与一些正常的上/下限进行比较。 例如:

datetime.date(year=2000, month=1,day=1) < datetime.datetime(year=year,month=month,day=day,hour=hour) <= datetime.datetime.now()

相关的上下限取决于你的需要。

编辑:请记住,这不会处理某些日期时间的事情,这些事情可能对您的应用程序无效(最小生日、假期、工作时间以外的时间等)

使用datetime

例如

>>> from datetime import datetime
>>> print datetime(2008,12,2)
2008-12-02 00:00:00
>>> print datetime(2008,13,2)

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print datetime(2008,13,2)
ValueError: month must be in 1..12

相关问题 更多 >

    热门问题