【问题标题】:Python: How to convert string into datetime [duplicate]Python:如何将字符串转换为日期时间 [重复]
【发布时间】:2012-09-22 06:20:16
【问题描述】:

可能重复:
Converting string into datetime

我正在解析一个 XML 文件,该文件为我提供了相应 isoformat 的时间:

tc1 = 2012-09-28T16:41:12.9976565
tc2 = 2012-09-28T23:57:44.6636597

但是当我从 XML 文件中检索它时,它被视为一个字符串。 我有两个这样的时间值,我需要在两者之间做一个差异,以便找到增量。 但由于它是一个字符串,我不能直接做 tc2-tc1。但是由于它们已经是日期时间的等格式,我如何让 python 将其识别为日期时间?

谢谢。

【问题讨论】:

  • 你看过datetime.strptime()吗?

标签: python datetime


【解决方案1】:

您可以使用python-dateutil parse() function,它比strptime 更灵活。希望对您有所帮助。

【讨论】:

【解决方案2】:

使用datetime.strptime 方法:

import datetime
datetime.datetime.strptime(your_string, "%Y-%m-%dT%H:%M:%S.%f")

提供的链接展示了不同的格式指令。请注意,微秒限制在 [0,999999] 范围内,这意味着您的示例将引发 ValueError(您使用的是 1/10us):您需要截断字符串以删除最后一个字符。

【讨论】:

  • 快速添加问题。一旦我有了日期时间的值,我如何获得时差?
  • datetime_object_2-datetime_object_1 会给你一个datetime.timedelta 对象。
【解决方案3】:

使用datetime module

td = datetime.strptime('2012-09-28T16:41:12.997656', '%Y-%m-%dT%H:%M:%S.%f') - 
     datetime.strptime('2012-09-28T23:57:44.663659', '%Y-%m-%dT%H:%M:%S.%f')
print td
# => datetime.timedelta(-1, 60208, 333997)

只有一个小问题:%f 处理的微秒数是一位数。所以我已经从你的输入字符串中删除了最后一个数字。

【讨论】:

    猜你喜欢
    • 2011-07-10
    • 2016-08-03
    • 2016-07-30
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多