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