我有一个 python 方法,它接受 日期输入作为字符串。
如何添加验证以确保传递给方法的日期字符串在 ffg 中。格式:
'YYYY-MM-DD'
如果不是,方法应该引发某种错误
原文由 codemickeycode 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 python 方法,它接受 日期输入作为字符串。
如何添加验证以确保传递给方法的日期字符串在 ffg 中。格式:
'YYYY-MM-DD'
如果不是,方法应该引发某种错误
原文由 codemickeycode 发布,翻译遵循 CC BY-SA 4.0 许可协议
Python dateutil
库专为此(以及更多)而设计。它会自动将其转换为 datetime
对象,并在不能时引发 ValueError
。
举个例子:
>>> from dateutil.parser import parse
>>> parse("2003-09-25")
datetime.datetime(2003, 9, 25, 0, 0)
如果日期格式不正确,则会引发 ValueError
:
>>> parse("2003-09-251")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace(**repl)
ValueError: day is out of range for month
dateutil
如果您将来开始需要解析其他格式,它也非常有用,因为它可以智能地处理大多数已知格式并允许您修改您的规范: dateutil
解析示例。
如果需要,它还可以处理时区。
基于评论的更新: parse
也接受关键字参数 dayfirst
如果日期不明确,它控制日期或月份是否先出现。这默认为 False。例如
>>> parse('11/12/2001')
>>> datetime.datetime(2001, 11, 12, 0, 0) # Nov 12
>>> parse('11/12/2001', dayfirst=True)
>>> datetime.datetime(2001, 12, 11, 0, 0) # Dec 11
原文由 Jacinda 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决