【问题标题】:Convert string to dateTime without the date information Python将字符串转换为没有日期信息 Python 的 dateTime
【发布时间】:2021-08-06 16:01:21
【问题描述】:

我正在尝试转换以下字符串列表:

['0:00:01.138000', '0:00:03.733000', '0:00:01.250000', '0:00:01.127000']

但是当我尝试以下代码时:

T = '%H:%M:%S.%f'

for i in range(len(Normal_key)):
    try:
        Normal_key[i]=datetime.strptime(Normal_key[i], T)
    except ValueError:
        continue

print(Normal_key)

由于某种原因,该列表现在包含数据信息,即使没有指定日期:

[datetime.datetime(1900, 1, 1, 0, 0, 1, 138000), datetime.datetime(1900, 1, 1, 0, 0, 3, 733000), datetime.datetime(1900, 1, 1, 0, 0, 1, 250000)]

【问题讨论】:

  • 这只是添加的默认日期;你可以使用datetime.strptime(Normal_key[i], T).time() 去掉日期
  • 它仍然返回相同的格式。
  • 您现在应该有时间对象而不是日期时间对象。您究竟期望什么“格式”?
  • 我想得到毫秒,为此,以下工作:(datetime.strptime(Normal_key[i], T).time().microsecond/1000))
  • 好的,所以您实际处理的是持续时间(Python 中的timedelta)。请注意,如果小时超过 23,datetime.strptime 方法将失败。您可能还想看看this question

标签: python string list datetime type-conversion


【解决方案1】:

我认为这是因为您使用的是 datetime 模块,因此默认情况下会向其中添加开始日期。你可以只提取时间使用

datetime.strptime("0:00:01.138000", "%H:%M:%S.%f").time()

【讨论】:

  • 如果我这样做,它会起作用: (datetime.strptime(Normal_key[i], T).time().microsecond/1000) 并将其从微秒转换为毫秒。
猜你喜欢
  • 2014-06-13
  • 2016-01-10
  • 2011-08-23
  • 1970-01-01
  • 2012-05-24
  • 2013-05-04
  • 2018-03-27
  • 1970-01-01
相关资源
最近更新 更多