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

Yar*_*rin 41 python datetime

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

Yar*_*rin 73

使用dateutil库.

我已经使用dateutil作为处理时区的必不可少的库
(请参阅将UTC日期时间字符串转换为本地日期时间以及如何在Python中将本地时间转换为UTC?)

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

import dateutil.parser
yourdate = dateutil.parser.parse(datestring)
Run Code Online (Sandbox Code Playgroud)

(另请参阅如何将ISO 8601日期时间字符串转换为Python日期时间对象?)

  • 我知道它已经老了。但它不处理这个字符串日期类型“Thursday, 21 May 2020 07:05:00 GMT”,因为这一天已写满。对此有什么建议吗? (2认同)

San*_*eep 12

如果只检查日期,可以使用简单的功能.

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)
Run Code Online (Sandbox Code Playgroud)


小智 9

您可以使用 datefinder ,它将检测所有类型的自然风格的日期。

import datefinder # Module used to find different style of date with time

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)
Run Code Online (Sandbox Code Playgroud)

输出

match found  2005-01-15 00:00:00
match found  2017-01-04 20:00:00
Run Code Online (Sandbox Code Playgroud)


syn*_*tel 7

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

我遇到了一些在Python中抨击它的东西:

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