将日期时间字符串转换为日期时间对象

时间:2021-02-16 02:53:58

标签: python list datetime

我有一个作为字符串导入的日期时间列表:

datetimes = ['datetime.datetime(2021, 2, 16, 12, 39, 54, 30886)',  'datetime.datetime(2021, 2, 16, 12, 40, 5, 238783)' ... ]

如何将字符串转换为日期时间对象?

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,这里是一种

import datetime

def todate(s):
    prefix = 'datetime.datetime('
    parts = [int(x) for x in s[len(prefix):-1].split(", ")]
    return datetime.datetime(*parts)

datetimes = ['datetime.datetime(2021, 2, 16, 12, 39, 54, 30886)',  'datetime.datetime(2021, 2, 16, 12, 40, 5, 238783)']

print([todate(x) for x in datetimes])

答案 1 :(得分:0)

这是转换为字符串的python 源代码。与其编写自定义解析器,不如使用...python 的解析器来解析它:)。这可以通过 eval:

实现
import datetime
dt_vec = [eval(dt) for dt in datetimes]

输出:

[datetime.datetime(2021, 2, 16, 12, 39, 54, 30886),
 datetime.datetime(2021, 2, 16, 12, 40, 5, 238783)]

这里有一个强烈的警告:不要如果您不知道代码来自哪里,或者可以看出它是恶意的,请不要使用 eval。事实上,您一直在计算机上运行代码,而无需检查(每次下载二进制文件并运行它?)但值得注意。