在Python中将str转换为datetime对象

时间:2019-06-19 01:28:47

标签: python python-3.x time

我有一个格式为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

2 个答案:

答案 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'>