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

 更新时间:2023年08月25日 09:42:29   作者:迹忆客  
这篇文章主要介绍了在 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 日期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Tensorflow--取tensorf指定列的操作方式

    Tensorflow--取tensorf指定列的操作方式

    这篇文章主要介绍了Tensorflow--取tensorf指定列的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • django初始化数据库的实例

    django初始化数据库的实例

    今天小编就为大家分享一篇django初始化数据库的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python实现登陆文件验证方法

    Python实现登陆文件验证方法

    本篇文章中我们给大家分享了关于Python实现登陆文件验证的方法和技巧,有兴趣的朋友们参考学习下。
    2018-10-10
  • 使用python脚本自动创建pip.ini配置文件代码实例

    使用python脚本自动创建pip.ini配置文件代码实例

    这篇文章主要介绍了使用python脚本自动创建pip.ini配置文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 手把手教你搭建python+selenium自动化环境(图文)

    手把手教你搭建python+selenium自动化环境(图文)

    本文主要介绍了手把手教你搭建python+selenium自动化环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • python实现两张图片拼接为一张图片并保存

    python实现两张图片拼接为一张图片并保存

    这篇文章主要为大家详细介绍了python实现两张图片拼接为一张图片并保存,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Python使用微信itchat接口实现查看自己微信的信息功能详解

    Python使用微信itchat接口实现查看自己微信的信息功能详解

    这篇文章主要介绍了Python使用微信itchat接口实现查看自己微信的信息功能,结合实例形式分析了Python微信itchat模块常见功能与操作技巧,需要的朋友可以参考下
    2019-08-08
  • logging level级别介绍

    logging level级别介绍

    今天小编就为大家分享一篇logging level级别介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python3使用matplotlib绘图时,坐标轴刻度不从X轴、y轴两端开始

    Python3使用matplotlib绘图时,坐标轴刻度不从X轴、y轴两端开始

    这篇文章主要介绍了Python3使用matplotlib绘图时,坐标轴刻度不从X轴、y轴两端开始问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 基于Python编写一个DOS命令辅助工具

    基于Python编写一个DOS命令辅助工具

    在日常系统管理和维护工作中,执行DOS(Disk Operating System)命令是一项必不可少的任务,下面我们就来看看如何使用Python编写一个简单的DOS命令辅助工具,简化系统管理任务吧
    2024-01-01

最新评论