📌  相关文章
📜  如何将 Python 的 .isoformat()字符串转换回日期时间对象(1)

📅  最后修改于: 2023-12-03 15:38:44.313000             🧑  作者: Mango

如何将 Python 的 .isoformat() 字符串转换回日期时间对象

在 Python 中,日期和时间可以以多种格式表示。其中一种常用的格式是 ISO 8601 格式,它使用类似 "2022-08-25T19:30:12.123456Z" 这样的字符串来表示日期和时间。

datetime 对象提供了 .isoformat() 方法,可以将日期时间对象格式化成 ISO 8601 格式的字符串。例如:

from datetime import datetime

now = datetime.now()
date_str = now.isoformat()
print(date_str)  # "2022-08-25T19:30:12.123456"

如果我们有一个以 ISO 8601 格式表示的字符串,想要将其转换回日期时间对象,可以使用 datetime 模块中的 datetime.fromisoformat() 方法。例如:

from datetime import datetime

date_str = "2022-08-25T19:30:12.123456"
dt_obj = datetime.fromisoformat(date_str)
print(dt_obj)  # datetime.datetime(2022, 8, 25, 19, 30, 12, 123456)

需要注意的是,datetime.fromisoformat() 方法接受的字符串格式必须是有效的 ISO 8601 格式。如果字符串格式不正确,会抛出 ValueError 异常。

如果你使用的 Python 版本太旧,不支持 datetime.fromisoformat() 方法,可以自己实现一个函数来解析 ISO 8601 格式的字符串。例如:

from datetime import datetime, timedelta

def iso_to_datetime(iso_str):
    dt_str, us_str = iso_str[:-6], iso_str[-6:]
    dt_obj = datetime.strptime(dt_str, '%Y-%m-%dT%H:%M:%S')
    us_int = int(us_str.lstrip('0'))
    us_obj = timedelta(microseconds=us_int)
    return dt_obj + us_obj

date_str = "2022-08-25T19:30:12.123456"
dt_obj = iso_to_datetime(date_str)
print(dt_obj)  # datetime.datetime(2022, 8, 25, 19, 30, 12, 123456)

以上就是将 Python 的 .isoformat() 字符串转换为日期时间对象的方法。希望对你有所帮助!