从字符串datetime.strptime(date_string, format)
获取日期时间的函数需要字符串格式作为第二个参数。有没有办法在不知道确切格式的情况下从字符串构建日期时间,并且让Python最好地猜测它?
答案 0 :(得分:65)
使用dateutil库。
我已经使用dateutil作为处理时区的必不可少的库 (请参阅Convert UTC datetime string to local datetime和How 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