python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python ISO 8601 日期

在 Python 中解析 ISO 8601 日期的详细过程

作者:迹忆客

这篇文章主要介绍了在 Python 中解析 ISO 8601 日期,我们将讨论典型的 ISO 8601 日期的结构,并向您展示如何将典型的 DateTime 对象解析为可以在所有地方使用的标准化 DateTime,需要的朋友可以参考下

日期对每个人都很重要,对我们使用的许多应用程序也至关重要。 作为一名开发人员,可能会对存在的不同时区或时间对象以及围绕它们工作感到困惑。

然而,通常存在使工作更容易的标准,这就是本文所需要的。 此外,我们将讨论典型的 ISO 8601 日期的结构,并向您展示如何将典型的 DateTime 对象解析为可以在所有地方使用的标准化 DateTime。

ISO 8601 日期的结构

ISO(国际标准化组织)致力于为其成员国在不同领域创建标准化,这些领域通常包括技术和非技术领域。 工程等领域是他们优先考虑的部分。

众多标准化包括 ISO 8601 日期时间,以月、日、小时、分钟、秒和毫秒表示。 它在全球范围内用作任何数据的日期时间标准,并且是基于时间的,有助于防止误传和错误。

如果您要构建一个在全球范围内使用的 Python 应用程序,了解 ISO 8601 DateTime 对象很重要,解析它可能是一项要求。

ISO 8601 日期时间用从左边开始的年份表示,以毫秒参数结束,并且通常与从 T 到 Z 的其他计算机字符结合使用。

2022-08-10 17:00:00.000

上面的 ISO DateTime 对象代表 2022 年 8 月 11 日下午 5 点。 在当地时区内。

重要的是声明 ISO 8601 DateTime 字符串需要日期部分,但时间部分是可选的。 它们是 ISO 8601 的不同变体,但以上将是本文的参考。

使用 strptime() 和 strtime() 在 Python 中解析 ISO 8601 日期

Python 预装了对不同操作有用的不同模块,其中一个预装模块是 datetime,它有助于日期和时间操作。 使用 datetime 模块,您可以获得 datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) 值。

now() 方法帮助我们获取和开发当前日期和时间,并提供典型的 DateTime 对象,我们可以操作或解析该对象以获取我们需要的任何信息。

from datetime import datetime
todaysDate = datetime.now()
print(todaysDate)

输出:

2022-09-28 06:55:56.832983

此外, today() 方法可用于实现相同的值。 虽然, now() 方法优于 today() 方法。

AnoTodaysDate = datetime.today()

输出:

2022-09-29 10:48:43.311880

之前,我们将典型的 Python DateTime 对象解析为标准化的 ISO 6801 DateTime。 让我们通过使用 Python DateTime 对象创建 ISO 6801 DateTime 来扭转这一局面。

为此,我们需要 strftime() 方法,它可以帮助我们将 DateTime 对象转换为其字符串表示形式——这次是 ISO 6801 DateTime 字符串。

from datetime import datetime
todaysDate = datetime.now()
todaysDateInISO = todaysDate.strftime('%Y-%m-%dT%H:%M:%S.%f%z')
print(todaysDateInISO)

输出:

2022-09-29T11:08:29.413183

todaysDate 绑定保存当前日期和时间的 Python DateTime 对象,然后我们将绑定作为参数传递给 strftime() 方法以创建等效的 ISO 8601 DateTime 字符串。

有了这些,我们如何将 ISO 8601 DateTime 字符串转换为 Python DateTime 对象? 我们需要一个与 strftime() 方法相反的方法,即 strptime()。

此方法从 DateTime 字符串创建 DateTime 对象。

因此,我们将传递一个 ISO 6801 DateTime 字符串作为 strptime() 的第一个参数和另一个定义所需日期格式的参数 - Python DateTime 对象 %Y-%m-%dT%H:%M:%SZ .

parsedDate = datetime.strptime("2022-03-04T21:08:12Z", "%Y-%m-%dT%H:%M:%SZ")
print(parsedDate)

输出:

2022-03-04 21:08:12

Y-%m-%dT%H:%M:%SZ 日期格式使用 Python DateTime 对象中指定的格式代码处理年、月、日、小时、分钟和秒。

使用 fromisoformat() 在 Python 中解析 ISO 8601 日期

类似于 strftime() strptime() 方法,有专门的方法可以创建 ISO 6801 DateTime 字符串或将它们转换为 Python DateTime 对象。 isoformat() 方法有助于返回根据 ISO 格式化的时间,该时间以 YYYY-MM-DD HH:MM:SS.mmmmmm 格式处理。

更重要的是, fromisoformat() 方法采用 ISO 8601 DateTime 字符串并返回等效的 Python DateTime 对象。

要从 Python DateTime 对象创建 ISO 8601,您可以先使用 now() 方法创建 DateTime 对象,然后使用 isoformat() 获取结果的 ISO 8601 属性(格式)。

from datetime import datetime
todaysDate = datetime.now()
todaysDateInISO = todaysDate.isoformat()
print(todaysDateInISO)

输出:

2022-09-28T07:46:13.350585

结果通常包含日期和时间之间的分隔符。 在这里,它是 T 并且可以更改。 您可以通过传递参数来更改分隔符。

todaysDateInISO = todaysDate.isoformat("$")
print(todaysDateInISO)

输出:

2022-09-28$07:48:11.060212

现在是问题的关键,我们可以将 ISO 8601 DateTime 字符串解析为典型的 Python DateTime 对象。

parsedDate = datetime.fromisoformat(todaysDateInISO)
print(parsedDate)

输出:

2022-09-29 14:38:17.928655

使用 dateutil 在 Python 中解析 ISO 8601 日期

dateutil Python 模块是一个第三方模块,可用于扩展可通过内置 datetime 模块访问的功能。

要安装它,您可以使用 pip 命令:

pip install python-dateutil

输出:

Collecting python-dateutil
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 kB 506.3 kB/s eta 0:00:00
Collecting six>=1.5
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, python-dateutil
Successfully installed python-dateutil-2.8.2 six-1.16.0

此外,您还可以使用另一个名为pytz 的第三方模块引入时区功能,该模块可以使用pip 命令安装。

pip install pytz

这些库可以轻松地创建基于时区的 ISO 8601 日期格式,并将 ISO 8601 DateTime 字符串解析为典型的 Python DateTime 对象。

例如,我们将使用美国/东部时区并使用 timezone() 方法、 now() 方法和 isoformat() 方法创建一个 ISO 8601 DateTime 字符串。

from datetime import datetime
import pytz
usEasternDate = datetime.now(pytz.timezone('US/Eastern'))
print(usEasternDate)
usEasternDateISO = usEasternDate.isoformat()
print(usEasternDateISO)

输出:

2022-09-29 10:01:17.654150-04:00
2022-09-29T10:01:17.654150-04:00

然后将 ISO 8601 DateTime 字符串解析为 Python DateTime 对象,我们可以使用 parse() 方法,并将 ISO 日期作为其参数传递。

parsedDate = parser.parse(usEasternDateISO)
print(parsedDate)

输出:

2022-09-29 10:01:17.654150-04:00

到此这篇关于在 Python 中解析 ISO 8601 日期的文章就介绍到这了,更多相关Python ISO 8601 日期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文