如何记录日期,随机格式化,并找出该格式是什么?
我正在阅读文件中的列,其中一个是日期。但是,我遇到了许多不同的格式:以下是示例。
strdate = ["6/4/2014 12:55:36 AM", "2014-06-04 6:27:55 PM"], etc.
解析日期的最佳(最快)方式似乎是dateutil.parser.parse()
。但是,我还想知道每个文件中读取的字符串的格式,因此下次我在类似文件中遇到日期时,我不必使用parse()
。这应该都是自动的;读取文件,弹出日期,并保存格式,以便下次读取类似文件时,我可以使用指定格式的datetime
。
如何检索日期格式?
答案 0 :(得分:2)
这是一个使用try / except机制的示例,该机制返回可在后续尝试中调用的formatter
便利函数:
from datetime import datetime
strdate = ["6/4/2014 12:55:36 AM", "2014-06-04 6:27:55 PM"]
def get_date_format(text):
date_formats = (
'%d/%m/%Y %H:%M:%S %p',
'%Y-%m-%d %H:%M:%S %p'
) # <--- adjust as necessary
for date_format in date_formats:
try:
datetime.strptime(text, date_format)
return lambda L: datetime.strptime(L, date_format)
except ValueError:
pass
raise ValueError("No suitable formats found")
for item in strdate:
formatter = get_date_format(item)
print formatter(item)
# 2014-04-06 12:55:36
# 2014-06-04 06:27:55