Python 中 Datetime.date 类的 fromisoformat() 函数


Python 中的 datetime.date 类提供了一种方便的方式来表示和操作日期。fromisoformat() 方法允许您从 ISO 格式的字符串创建日期对象。

fromisoformat() 函数将解析 ISO 8601 格式的字符串,并创建一个表示该日期的日期对象。这在许多情况下都很有用,例如当您需要从日志文件中解析日期或与以 ISO 8601 格式提供日期的 API 协作时。

语法

datetime.date.fromisoformat(date_string)

参数 date_string 是一个字符串,表示 ISO 格式“YYYY-MM-DD”的日期。

示例 1

我们将使用 fromisoformat() 方法从字符串创建日期对象

算法

  • 加载 datetime 模块

  • 初始化一个包含 ISO 格式日期的字符串变量

  • 使用 fromisoformat() 函数将字符串转换为日期对象

  • 打印日期对象

from datetime import date
# date passed as string data type
date_string = "2023-03-31"

# Converts string object to a date object
date_obj = date.fromisoformat(date_string)

print(date_obj)

输出

2023-03-31

当调用 fromisoformat() 时,ISO 格式的字符串作为参数传递给该函数,该函数严格遵循“YYYY-MM-DD”格式。该字符串会被解析,并且日期组件(年、月和日)会被提取。类似地,时间也可以通过小时、分钟和秒来提取。如果解析的字符串严格遵循 ISO 8601 格式,则会返回一个等效的 datetime 对象。

如果遵循的格式不符合 ISO 格式,则会引发 ValueError。这表示月、日和年没有按照正确的顺序排列或超出预期范围。

示例 2

以下示例将存储在列表中的多个字符串对象(日期)转换为日期对象

算法

  • 导入 datetime 模块

  • 定义一个包含多个 ISO 格式字符串的列表变量

  • 创建一个空列表来存储日期对象

  • 循环遍历列表中的每个字符串,并使用 fromisoformat() 函数将其转换为日期对象

  • 将日期对象追加到列表中

  • 将列表打印给用户

import datetime

date_strs = ['2022-01-01', '2022-01-02', '2022-01-03']
date_objs = []

for date_str in date_strs:
   date_objs.append(datetime.date.fromisoformat(date_str))

print(date_objs)

输出

[datetime.date(2022, 1, 1), datetime.date(2022, 1, 2), datetime.date(2022, 1, 3)]

示例 3

以下示例将存储在字符串中的今天日期和当前时间转换为日期对象

算法

  • 导入 datetime 和 time 模块

  • 使用 date.today() 获取今天日期的字符串表示

  • 打印 ISO 格式的今天日期字符串

  • 使用 date.fromisoformat() 函数将今天转换为日期对象。

  • 将日期对象打印给用户。

from datetime import date
today= str(date.today());
print("Today's Date as string: %s" %today)
mydate = date.fromisoformat(today);
print(mydate);

输出

Today's Date as string: 2023-05-20
2023-05-20

结论

使用此函数可以轻松高效地将包含 ISO 格式日期的字符串转换为日期对象,以便于进一步操作。

使用 fromisoformat() 函数可以避免手动解析 ISO 格式字符串,而手动解析容易出错。此外,此函数确保生成的日期对象有效且符合 ISO 标准。

此外,Python 的 datetime 模块包含 fromisoformat() 函数,并提供了一系列用于处理日期和时间的实用程序。此模块允许我们格式化日期、在不同的时区之间转换以及执行各种日期和时间计算。

更新于: 2023-08-23

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告