【问题标题】:Python - convert string type to datetime typePython - 将字符串类型转换为日期时间类型
【发布时间】:2020-09-06 20:25:31
【问题描述】:

我有两个要比较的变量。打印后,它们是这样的:

2020-05-20 13:01:30
2020-05-20 14:49:03

但是,一个是字符串类型,另一个是日期时间类型。 如果我想将字符串 one 转换为 datetype 以便我可以比较它们,这是使用strptime 的唯一方法吗?因为这对我来说似乎有点多余,因为字符串已经具有我想要的确切格式。基本上,有没有和struptime一样的功能,但没有重新格式化它?你可以想象,谷歌搜索这个问题是不可能的,因为我得到的只是人们试图将任何类型的字符串格式化为日期时间,所以所有答案都指向strptime

【问题讨论】:

  • 您需要更改数据类型,因为没有为 str 与 datetime 类型定义比较。您的另一个选择是通过str 函数将日期时间转换为 str,当您打印它们时,它会在后台应用。
  • 这能回答你的问题吗? Converting string into datetime
  • 不,这个问题的公认答案正是我不想做的,第二好的答案需要第三方模块,我已经在这里得到了更好的答案

标签: python datetime


【解决方案1】:

您可以使用dateutil提供的parser

from dateutil import parser

date_object = parser.parse("2020-05-20 13:01:30")

print(repr(date_object))
# datetime.datetime(2020, 5, 20, 13, 1, 30)

print(type(date_object)) 
# <class 'datetime.datetime'>

print(date_object)  
# 2020-05-20 13:01:30

来自文档:

这个模块提供了一个通用的日期/时间字符串解析器,它能够解析大多数已知的格式来表示日期和/或时间。

文档:https://dateutil.readthedocs.io/en/stable/parser.html

【讨论】:

  • 也可以,但是由于 datetime 已经完成了这项工作,所以宁愿使用它而不是仅仅为此导入一个模块,但是谢谢!
  • 是的,但这个解析器支持许多其他格式。因此,您不仅限于 ISO 格式。
【解决方案2】:

如果您使用 Python 3.7+,对于与 ISO 8601 兼容的字符串,请使用 datetime.fromisoformat(),因为这比 strptime() 高效得多。例如:

from datetime import datetime
dtobj = datetime.fromisoformat('2020-05-20 13:01:30')
print(repr(dtobj))
# datetime.datetime(2020, 5, 20, 13, 1, 30)

您可以找到与strptime() here 的小基准。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2014-07-08
    • 1970-01-01
    • 2013-03-11
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多