我有一个格式为2019-06-18T11:00:10.499378622Z
的字符串。我正在尝试将其转换为日期时间对象。
我尝试过
s_datetime = datetime.strptime(s_datetime_string, '%Y-%m-%d*%H:%M:%S*')
import datetime.datetime
s_datetime = datetime.strptime(s_datetime_string, '%Y-%m-%d*%H:%M:%S*')
Getting ValueError as the regex does not match
答案 0 :(得分:1)
我也收到此错误,因此我在处理ISO时间时做了一点功能。
def ISOtstr(iso):
dcomponents = [1,1,1]
dcomponents[0] = iso[:4]
dcomponents[1] = iso[5:7]
dcomponents[2] = iso[8:10]
tcomponents = [1,1,1]
tcomponents[0] = iso[11:13]
tcomponents[1] = iso[14:16]
tcomponents[2] = iso[17:19]
d = dcomponents
t = tcomponents
string = "{}-{}-{} {}:{}:{}".format(d[0],d[1],d[2],t[0],t[1],t[2])
return string
将ISO转换为字符串:
string = '2019-06-18T11:00:10.499378622Z'
date_string = ISOtstring(string)
date_obj = datetime.datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
#Output
#datetime.datetime(2019, 6, 18, 11, 0, 10)
最有可能是一种更好的方法。但是我在处理ISO字符串时都会用到它。
如果您经常使用它,可以将其设为单独的功能:
def ISOtdatetime(iso):
date_string = ISOtstring(iso)
date_obj = datetime.datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
return date_obj
刚意识到我刚创建函数时,那里就有一些毫无意义的代码。它们已被删除。
答案 1 :(得分:0)
您的输入也出现了错误,尤其是在second
单元上。但是,当我稍微更改second
的单位时,它可以工作。所以,我对此一无所知。
from datetime import datetime
s_datetime = datetime.strptime('2019-06-18T11:00:10.499378Z', '%Y-%m-%dT%H:%M:%S.%fZ')
print(s_datetime)
print(type(s_datetime))
输出:
2019-06-18 11:00:10.499378
<class 'datetime.datetime'>