在 Python 中解析 ISO 8601 日期的詳細(xì)過程
日期對(duì)每個(gè)人都很重要,對(duì)我們使用的許多應(yīng)用程序也至關(guān)重要。 作為一名開發(fā)人員,可能會(huì)對(duì)存在的不同時(shí)區(qū)或時(shí)間對(duì)象以及圍繞它們工作感到困惑。
然而,通常存在使工作更容易的標(biāo)準(zhǔn),這就是本文所需要的。 此外,我們將討論典型的 ISO 8601 日期的結(jié)構(gòu),并向您展示如何將典型的 DateTime 對(duì)象解析為可以在所有地方使用的標(biāo)準(zhǔn)化 DateTime。
ISO 8601 日期的結(jié)構(gòu)
ISO(國際標(biāo)準(zhǔn)化組織)致力于為其成員國在不同領(lǐng)域創(chuàng)建標(biāo)準(zhǔn)化,這些領(lǐng)域通常包括技術(shù)和非技術(shù)領(lǐng)域。 工程等領(lǐng)域是他們優(yōu)先考慮的部分。
眾多標(biāo)準(zhǔn)化包括 ISO 8601 日期時(shí)間,以月、日、小時(shí)、分鐘、秒和毫秒表示。 它在全球范圍內(nèi)用作任何數(shù)據(jù)的日期時(shí)間標(biāo)準(zhǔn),并且是基于時(shí)間的,有助于防止誤傳和錯(cuò)誤。
如果您要構(gòu)建一個(gè)在全球范圍內(nèi)使用的 Python 應(yīng)用程序,了解 ISO 8601 DateTime 對(duì)象很重要,解析它可能是一項(xiàng)要求。
ISO 8601 日期時(shí)間用從左邊開始的年份表示,以毫秒?yún)?shù)結(jié)束,并且通常與從 T 到 Z 的其他計(jì)算機(jī)字符結(jié)合使用。
2022-08-10 17:00:00.000
上面的 ISO DateTime 對(duì)象代表 2022 年 8 月 11 日下午 5 點(diǎn)。 在當(dāng)?shù)貢r(shí)區(qū)內(nèi)。
重要的是聲明 ISO 8601 DateTime 字符串需要日期部分,但時(shí)間部分是可選的。 它們是 ISO 8601 的不同變體,但以上將是本文的參考。
使用 strptime() 和 strtime() 在 Python 中解析 ISO 8601 日期
Python 預(yù)裝了對(duì)不同操作有用的不同模塊,其中一個(gè)預(yù)裝模塊是 datetime,它有助于日期和時(shí)間操作。 使用 datetime 模塊,您可以獲得 datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
值。
now()
方法幫助我們獲取和開發(fā)當(dāng)前日期和時(shí)間,并提供典型的 DateTime 對(duì)象,我們可以操作或解析該對(duì)象以獲取我們需要的任何信息。
from datetime import datetime todaysDate = datetime.now() print(todaysDate)
輸出:
2022-09-28 06:55:56.832983
此外, today()
方法可用于實(shí)現(xiàn)相同的值。 雖然, now()
方法優(yōu)于 today()
方法。
AnoTodaysDate = datetime.today()
輸出:
2022-09-29 10:48:43.311880
之前,我們將典型的 Python DateTime 對(duì)象解析為標(biāo)準(zhǔn)化的 ISO 6801 DateTime。 讓我們通過使用 Python DateTime 對(duì)象創(chuàng)建 ISO 6801 DateTime 來扭轉(zhuǎn)這一局面。
為此,我們需要 strftime()
方法,它可以幫助我們將 DateTime 對(duì)象轉(zhuǎn)換為其字符串表示形式——這次是 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 綁定保存當(dāng)前日期和時(shí)間的 Python DateTime 對(duì)象,然后我們將綁定作為參數(shù)傳遞給 strftime() 方法以創(chuàng)建等效的 ISO 8601 DateTime 字符串。
有了這些,我們?nèi)绾螌?ISO 8601 DateTime 字符串轉(zhuǎn)換為 Python DateTime 對(duì)象? 我們需要一個(gè)與 strftime() 方法相反的方法,即 strptime()。
此方法從 DateTime 字符串創(chuàng)建 DateTime 對(duì)象。
因此,我們將傳遞一個(gè) ISO 6801 DateTime 字符串作為 strptime() 的第一個(gè)參數(shù)和另一個(gè)定義所需日期格式的參數(shù) - Python DateTime 對(duì)象 %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 對(duì)象中指定的格式代碼處理年、月、日、小時(shí)、分鐘和秒。
使用 fromisoformat() 在 Python 中解析 ISO 8601 日期
類似于 strftime()
和 strptime()
方法,有專門的方法可以創(chuàng)建 ISO 6801 DateTime 字符串或?qū)⑺鼈冝D(zhuǎn)換為 Python DateTime 對(duì)象。 isoformat() 方法有助于返回根據(jù) ISO 格式化的時(shí)間,該時(shí)間以 YYYY-MM-DD HH:MM:SS.mmmmmm 格式處理。
更重要的是, fromisoformat()
方法采用 ISO 8601 DateTime 字符串并返回等效的 Python DateTime 對(duì)象。
要從 Python DateTime 對(duì)象創(chuàng)建 ISO 8601,您可以先使用 now()
方法創(chuàng)建 DateTime 對(duì)象,然后使用 isoformat()
獲取結(jié)果的 ISO 8601 屬性(格式)。
from datetime import datetime todaysDate = datetime.now() todaysDateInISO = todaysDate.isoformat() print(todaysDateInISO)
輸出:
2022-09-28T07:46:13.350585
結(jié)果通常包含日期和時(shí)間之間的分隔符。 在這里,它是 T 并且可以更改。 您可以通過傳遞參數(shù)來更改分隔符。
todaysDateInISO = todaysDate.isoformat("$") print(todaysDateInISO)
輸出:
2022-09-28$07:48:11.060212
現(xiàn)在是問題的關(guān)鍵,我們可以將 ISO 8601 DateTime 字符串解析為典型的 Python DateTime 對(duì)象。
parsedDate = datetime.fromisoformat(todaysDateInISO) print(parsedDate)
輸出:
2022-09-29 14:38:17.928655
使用 dateutil 在 Python 中解析 ISO 8601 日期
dateutil Python 模塊是一個(gè)第三方模塊,可用于擴(kuò)展可通過內(nèi)置 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
此外,您還可以使用另一個(gè)名為pytz 的第三方模塊引入時(shí)區(qū)功能,該模塊可以使用pip 命令安裝。
pip install pytz
這些庫可以輕松地創(chuàng)建基于時(shí)區(qū)的 ISO 8601 日期格式,并將 ISO 8601 DateTime 字符串解析為典型的 Python DateTime 對(duì)象。
例如,我們將使用美國/東部時(shí)區(qū)并使用 timezone()
方法、 now()
方法和 isoformat()
方法創(chuàng)建一個(gè) 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 對(duì)象,我們可以使用 parse()
方法,并將 ISO 日期作為其參數(shù)傳遞。
parsedDate = parser.parse(usEasternDateISO) print(parsedDate)
輸出:
2022-09-29 10:01:17.654150-04:00
到此這篇關(guān)于在 Python 中解析 ISO 8601 日期的文章就介紹到這了,更多相關(guān)Python ISO 8601 日期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)登陸文件驗(yàn)證方法
本篇文章中我們給大家分享了關(guān)于Python實(shí)現(xiàn)登陸文件驗(yàn)證的方法和技巧,有興趣的朋友們參考學(xué)習(xí)下。2018-10-10使用python腳本自動(dòng)創(chuàng)建pip.ini配置文件代碼實(shí)例
這篇文章主要介紹了使用python腳本自動(dòng)創(chuàng)建pip.ini配置文件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09手把手教你搭建python+selenium自動(dòng)化環(huán)境(圖文)
本文主要介紹了手把手教你搭建python+selenium自動(dòng)化環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06python實(shí)現(xiàn)兩張圖片拼接為一張圖片并保存
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)兩張圖片拼接為一張圖片并保存,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07Python使用微信itchat接口實(shí)現(xiàn)查看自己微信的信息功能詳解
這篇文章主要介紹了Python使用微信itchat接口實(shí)現(xiàn)查看自己微信的信息功能,結(jié)合實(shí)例形式分析了Python微信itchat模塊常見功能與操作技巧,需要的朋友可以參考下2019-08-08Python3使用matplotlib繪圖時(shí),坐標(biāo)軸刻度不從X軸、y軸兩端開始
這篇文章主要介紹了Python3使用matplotlib繪圖時(shí),坐標(biāo)軸刻度不從X軸、y軸兩端開始問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08