获取字符串日期的格式

时间:2014-08-05 18:38:51

标签: python datetime python-dateutil

如何记录日期,随机格式化,并找出该格式是什么?

我正在阅读文件中的列,其中一个是日期。但是,我遇到了许多不同的格式:以下是示例。

strdate = ["6/4/2014 12:55:36 AM", "2014-06-04 6:27:55 PM"], etc.

解析日期的最佳(最快)方式似乎是dateutil.parser.parse()。但是,我还想知道每个文件中读取的字符串的格式,因此下次我在类似文件中遇到日期时,我不必使用parse()。这应该都是自动的;读取文件,弹出日期,并保存格式,以便下次读取类似文件时,我可以使用指定格式的datetime

如何检索日期格式?

1 个答案:

答案 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