在 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 日期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 批量压缩图片的脚本

    python 批量压缩图片的脚本

    用Python编写的批量压缩图片的脚本,可以自定义压缩质量,有批量图片压缩需求的朋友可以直接拿来用
    2021-06-06
  • Python获取服务器信息的最简单实现方法

    Python获取服务器信息的最简单实现方法

    这篇文章主要介绍了Python获取服务器信息的最简单实现方法,涉及Python中urllib2库的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • python爬虫爬取图片的简单代码

    python爬虫爬取图片的简单代码

    在本篇文章里小编给大家整理的是一篇关于python爬虫爬取图片的简单代码内容,有兴趣的朋友们可以测试下。
    2021-01-01
  • Python速成篇之像selenium一样操作电脑详解

    Python速成篇之像selenium一样操作电脑详解

    这篇文章为大家介绍了在Python中如何像selenium一样操作电脑,本文主要使用的是pyautogui库,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-08-08
  • python实现自动打卡小程序

    python实现自动打卡小程序

    这篇文章主要为大家详细介绍了python实现自动打卡小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Python利用Prim算法生成迷宫

    Python利用Prim算法生成迷宫

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。这篇文章将利用Prim算法实现迷宫的生成,感兴趣的可以了解一下
    2023-01-01
  • Python连接SQLServer2000的方法详解

    Python连接SQLServer2000的方法详解

    这篇文章主要介绍了Python连接SQLServer2000的方法,结合实例形式分析了Python实现数据库连接过程中所遇到的常见问题与相关注意事项,需要的朋友可以参考下
    2017-04-04
  • python如何运行js语句

    python如何运行js语句

    在本篇内容里小编给大家整理的是一篇关于python如何运行js语句的相关内容,有兴趣的朋友们可以参考下。
    2020-09-09
  • python绘制分布折线图的示例

    python绘制分布折线图的示例

    这篇文章主要介绍了python绘制分布折线图的示例代码,帮助大家更好的利用python绘制图像,感兴趣的朋友可以了解下
    2020-09-09
  • python轻松办公将100个Excel中符合条件的数据汇总到1个Excel里

    python轻松办公将100个Excel中符合条件的数据汇总到1个Excel里

    这篇文章主要为大家介绍了python轻松办公将100个Excel中符合条件的数据汇总到1个Excel里示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论