2

你如何获取一个随机格式化的日期,并弄清楚该格式是什么?

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

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

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

你如何检索日期的格式?

4

1 回答 1

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
于 2014-08-05T19:12:45.593 回答