我将获取字符串形式的日期,然后将其解析为datetime对象。有没有办法检查对象的日期格式是什么?
假设这是我正在创建的对象:
modified_date = parser.parse("2015-09-01T12:34:15.601+03:00")我如何打印或获得这个对象的确切日期格式,我需要这个来验证它的格式是否正确,这样我就能够区分今天的日期和给定的日期。
发布于 2015-12-04 02:58:00
我看了一下源代码,不幸的是,python dateutil没有公开格式。事实上,它甚至根本不会生成对格式的猜测,它只是继续进行解析-代码就像big nested spaghetti of conditionals。
你可以看看dateinfer,它看起来就是你要搜索的,但这些都是不相关的库,所以根本不能保证python-util会以dateinfer建议的相同格式进行解析。
>>> from dateinfer import infer
>>> s = "2015-09-01T12:34:15.601+03:00"
>>> infer([s])
'%Y-%d-%mT%I:%M:%S.601+%m:%d'看看这个.601。很近,但不是雪茄。我认为它可能还混淆了月份和日期。如果给它多个日期字符串作为猜测的基础,可能会得到更好的结果。
发布于 2015-12-04 21:37:37
我需要这个来验证它的格式是否正确
如果您知道预期的时间格式(或一组有效的时间格式),那么可以使用它解析输入:如果成功,则时间格式是有效的(the usual EAFP approach in Python):
for date_format in valid_date_formats:
try:
return datetime.strptime(date_string, date_format), date_format
except ValueError: # wrong date format
pass # try the next format
raise ValueError("{date_string} is not in the correct format. "
"valid formats: {valid_date_formats}".format(**vars()))这是一个complete code example (in Russian -- ignore the text, look at the code)。
如果有许多有效的日期格式,那么为了提高时间性能,您可能希望将它们组合到一个正则表达式或convert the regex to a deterministic or non-deterministic finite-state automaton (DFA or NFA)中。
通常,如果您需要从较大的文本中提取日期,而这些文本的变化太大,无法手动创建解析规则;请考虑机器学习解决方案,例如webstruct (用于html输入)之类的NER system。
https://stackoverflow.com/questions/34073502
复制相似问题