来自Python中字符串的datetime,最佳猜测字符串格式

时间:2012-02-29 22:27:36

标签: python datetime

从字符串datetime.strptime(date_string, format)获取日期时间的函数需要字符串格式作为第二个参数。有没有办法在不知道确切格式的情况下从字符串构建日期时间,并且让Python最好地猜测它?

4 个答案:

答案 0 :(得分:65)

使用dateutil库。

我已经使用dateutil作为处理时区的必不可少的库 (请参阅Convert UTC datetime string to local datetimeHow do I convert local time to UTC in Python?

我刚刚意识到它有日期解析支持:

import dateutil.parser
yourdate = dateutil.parser.parse(datestring)

(另见How do I translate a ISO 8601 datetime string into a Python datetime object?

答案 1 :(得分:10)

如果仅检查日期,可以使用简单的函数。

def get_date(s_date):
    date_patterns = ["%d-%m-%Y", "%Y-%m-%d"]

    for pattern in date_patterns:
        try:
            return datetime.datetime.strptime(s_date, pattern).date()
        except:
            pass

    print "Date is not in expected format: %s" %(s_date)
    sys.exit(0)

答案 2 :(得分:6)

在我成为一个蟒蛇人之前,我是一个perl家伙。我一直错过但却没有看到任何与之相关的事情之一是Date::Manip。该模块可以从少量的半字节中提取一个好的时间戳。我几乎怀疑它的作者与魔鬼达成了协议。

我遇到了一些在Python中抨击它的事情:

如果你发现任何更好的东西我会喜欢听到它。

答案 3 :(得分:1)

您可以使用日期查找器,它将检测所有类型的自然日期日期。

import datefinder#用于查找带时间的不同日期样式的模块

string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates(string_value)            
for match in matches:
    print("match found ",match)

输出

match found  2005-01-15 00:00:00
match found  2017-01-04 20:00:00