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