从字符串中获取日期时间的函数datetime.strptime(date_string, format)
需要将字符串格式作为第二个参数传入。是否有一种方法可以在不知道确切格式且让Python自动猜测的情况下,从字符串中构建日期时间?
从字符串中获取日期时间的函数datetime.strptime(date_string, format)
需要将字符串格式作为第二个参数传入。是否有一种方法可以在不知道确切格式且让Python自动猜测的情况下,从字符串中构建日期时间?
使用 dateutil 库。
我已经在处理时区时将dateutil库作为必不可少的库使用了
(参见 将UTC日期时间字符串转换为本地日期时间 和 如何在Python中将本地时间转换为UTC?)
而我刚刚意识到它还有日期解析支持:
import dateutil.parser
yourdate = dateutil.parser.parse(datestring)
如果只需要检查日期,则可以使用简单的函数轻松完成。
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)
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)
输出
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
在我还是个Perl爱好者之前,我一直是一个Python爱好者。我一直想要的一个东西是类似于Date::Manip的模块。该模块可以从一堆杂乱无章的数据中提取出良好的时间戳。我几乎怀疑其作者和魔鬼签订了合同。
我发现了一些Python尝试实现该功能的方法:
如果你找到了更好的,请务必告诉我。