【问题标题】:Convert string of datetime to datetime object [duplicate]将日期时间字符串转换为日期时间对象[重复]
【发布时间】:2021-02-16 02:53:58
【问题描述】:

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

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

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

【问题讨论】:

标签: python list datetime


【解决方案1】:

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

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])

【讨论】:

    【解决方案2】:

    这是转换为字符串的 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。事实上,您一直在您的计算机上运行您不检查的代码(每次下载二进制文件并运行它?)但值得注意。

    【讨论】:

      猜你喜欢
      • 2016-09-24
      • 2023-04-09
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 2017-08-04
      • 2017-09-10
      相关资源
      最近更新 更多