Home >> Blog >> Python datetime 日期時間模組詳解
Python datetime 日期時間模組詳解
Python語言在SEO網站優化的過程中所需要用到的各方面軟體息息相關,在 Python 中,日期和時間不是它們自己的數據類型,但是可以導入一個名為datetime的模組來處理日期和時間。Python Datetime 模組內置於 Python 中,因此無需在外部安裝。
Python Datetime 模組提供了處理日期和時間的類。這些類提供了許多處理日期、時間和時間間隔的函數。日期和日期時間是 Python 中的一個對象,因此當您操作它們時,您實際上是在操作對象,而不是字符串或時間戳。
DateTime 模組分為 6 個主要類 -
- date – 一個理想化的簡單日期,假設當前的公曆一直有效,並且永遠有效。它的屬性是年、月和日。
- time – 一個理想化的時間,獨立於任何特定的一天,假設每天正好有 24*60*60 秒。它的屬性是小時、分鐘、秒、微秒和tzinfo。
- datetime – 它是日期和時間以及屬性年、月、日、小時、分鐘、秒、微秒和 tzinfo 的組合。
- timedelta – 表示兩個日期、時間或日期時間實例之間的差異的持續時間,以微秒為單位。
- tzinfo - 它提供時區信息對象。
- timezone – 將 tzinfo 抽象基類實現為與 UTC 的固定偏移量的類(3.2 版中的新功能)。
日期類
日期類用於在 Python 中實例化日期對象。實例化此類的對象時,它表示格式為 YYYY-MM-DD 的日期。此類的構造函數需要三個強制參數年、月和日期。
構造函數語法:
類 datetime.date(年、月、日)
參數必須在以下範圍內 -
- MINYEAR <= 年 <= MAXYEAR
- 1 <= 月 <= 12
- 1 <= 天 <= 給定月份和年份的天數
注意– 如果參數不是整數,則會引發 TypeError,如果超出範圍,則會引發 ValueError。
範例 1:在 Python 中表示日期的 Date 對象
輸出:
作為參數傳遞的日期是 1996-12-11
範例 2:獲取當前日期
使用日期類的今天()函數返回當前本地日期。today() 函數帶有幾個屬性(年、月和日)。這些可以單獨列印。
輸出
今天的日期是2021-08-19
範例 3:獲取今天的年月日
我們可以使用日期類的年月日屬性從日期對像中獲取年月日屬性。
輸出
當年:2021
本月:8
當天:19
範例 4:從時間戳獲取日期
我們可以使用 fromtimestamp() 方法從時間戳 y=創建日期對象。時間戳是從 1970 年 1 月 1 日 UTC 到特定日期的秒數。
輸出
時間戳的日期時間:2029-10-25 16:17:48
範例 5:將日期轉換為字符串
我們可以使用兩個函數 isoformat() 和 strftime() 將日期對象轉換為字符串表示。
輸出
字符串表示 2021-08-19
<類'str'>
日期類方法列表
函數名稱 描述
時間() 返回一個表示日期的字符串
來自 返回對應於 ISO 日曆的日期
isocalendar()
來自isoformat() 從日期的字符串表示中返回一個日期對象
從序數() 從預測的公曆序數返回一個日期對象,其中第 1 年的 1 月 1 日有序數 1
從時間戳() 從 POSIX 時間戳返回一個日期對象
等歷() 返回元組年、周和工作日
等格式() 返回日期的字符串表示
工作日() 以整數形式返回星期幾,其中星期一為 1,星期日為 7
代替() 使用給定參數更改日期對象的值
strftime() 返回具有給定格式的日期的字符串表示形式
時間元組() 返回 time.struct_time 類型的對象
今天() 返回當前本地日期
序數() 返回日期的預測公曆序數,其中第 1 年的 1 月 1 日有序數 1
工作日() 以整數形式返回星期幾,其中星期一為 0,星期日為 6
時間班
時間類創建代表當地時間的時間對象,獨立於任何一天。
構造函數語法:
類 datetime.time(小時=0, 分鐘=0, 秒=0, 微秒=0, tzinfo=None, *, fold=0)
所有參數都是可選的。tzinfo 可以是 None 否則所有屬性必須是以下範圍內的整數 -
- 0 <= 小時 < 24
- 0 <= 分鐘 < 60
- 0 <= 秒 < 60
- 0 <= 微秒 < 1000000
- 折疊 [0, 1]
範例 1:在 Python 中表示時間的時間對象
# Python program to
# demonstrate time class
from datetime import time
# calling the constructor
my_time = time(13, 24, 56)
print("Entered time", my_time)
# calling constructor with 1
# argument
my_time = time(minute=12)
print("\nTime with one argument", my_time)
# Calling constructor with
# 0 argument
my_time = time()
print("\nTime without argument", my_time)
# Uncommenting time(hour = 26)
# will rase an ValueError as
# it is out of range
# uncommenting time(hour ='23')
# will raise TypeError as
# string is passed instead of int
輸出:
入駐時間 13:24:56
一次爭論的時間 00:12:00
沒有參數的時間 00:00:00
回溯(最近一次通話最後):
文件“/home/95ff83138a1b3e67731e57ec6dddef25.py”,第 21 行,在
列印(時間(小時=26))
ValueError:小時必須在 0..23
回溯(最近一次通話最後):
文件“/home/fcee9ba5615b0b74fc3ba39ec9a789fd.py”,第 21 行,在
列印(時間(小時='23'))
TypeError:需要一個整數(獲取類型 str)
範例 2:獲取小時、分鐘、秒和微秒
創建時間對像後,也可以單獨列印其屬性。
輸出:
小時 = 11
分鐘 = 34
第二 = 56
微秒 = 0
範例 3:將 Time 對象轉換為字符串
我們可以使用 isoformat() 方法將時間對象轉換為字符串。
輸出
字符串表示:12:24:36.001212
<類'str'>
時間類方法列表
函數名稱 描述
dst() 返回 tzinfo.dst() 是 tzinfo 不是 None
來自isoformat() 從時間的字符串表示中返回一個時間對象
等格式() 從時間對象返回時間的字符串表示
代替() 使用給定參數更改時間對象的值
strftime() 以給定格式返回時間的字符串表示形式
名稱() 返回 tzinfo.tzname() is tzinfo is not None
utcoffset() 返回 tzinfo.utcffsets() is tzinfo is not None
日期時間類
DateTime 類包含有關日期和時間的信息。與日期對像一樣,日期時間假定當前的公曆在兩個方向上擴展;與時間對像一樣,datetime 假定每天正好有 3600*24 秒。構造函數語法:
類 datetime.datetime(年,月,日,小時=0,分鐘=0,秒=0,微秒=0,tzinfo=None,*,折疊=0)
年、月和日參數是強制性的。tzinfo 可以是 None,其餘所有屬性必須是以下範圍內的整數 -
- MINYEAR <= 年 <= MAXYEAR
- 1 <= 月 <= 12
- 1 <= 天 <= 給定月份和年份的天數
- 0 <= 小時 < 24
- 0 <= 分鐘 < 60
- 0 <= 秒 < 60
- 0 <= 微秒 < 1000000
- 折疊 [0, 1]
注意– 傳遞整數以外的參數將引發 TypeError,傳遞超出範圍的參數將引發 ValueError。
範例 1:在 Python 中表示 DateTime 的 DateTime 對象
輸出:
1999-12-12 00:00:00
1999-12-12 12:12:12.342380
範例 2:獲取年、月、小時、分鐘和時間戳
創建 DateTime 對像後,也可以單獨列印其屬性。
輸出:
年 = 1999
月 = 12
小時 = 12
分鐘 = 12
時間戳 = 945000732.0
範例 3:當前日期和時間
您可以使用 Datetime.now() 函數列印當前日期和時間。now() 函數返回當前的本地日期和時間。
輸出:
當前日期和時間是 2019-10-25 11:12:11.289834
範例 4:將 Python 日期時間轉換為字符串
我們可以使用datetime.strftime和 datetime.isoformat 方法 在 Python 中將 Datetime 轉換為字符串。
輸出
2021-08-19T18:13:25.346259
<類'str'>
日期時間類方法列表
函數名稱 描述
astimezone() 返回包含時區信息的 DateTime 對象。
結合() 組合日期和時間對象並返回一個 DateTime 對象
時間() 返回日期和時間的字符串表示形式
日期() 返回 Date 類對象
來自isoformat() 從日期和時間的字符串表示中返回一個日期時間對象
從序數() 從預測的公曆序數返回一個日期對象,其中第 1 年的 1 月 1 日的序數為 1。小時、分鐘、秒和微秒為 0
從時間戳() 從 POSIX 時間戳返回日期和時間
等歷() 返回元組年、周和工作日
等格式() 返回日期和時間的字符串表示
工作日() 以整數形式返回星期幾,其中星期一為 1,星期日為 7
現在() 使用 tz 參數返回當前本地日期和時間
代替() 更改 DateTime 對象的特定屬性
strftime() 返回具有給定格式的 DateTime 對象的字符串表示形式
字符串時間() 返回與日期字符串對應的 DateTime 對象
時間() 返回時間類對象
時間元組() 返回 time.struct_time 類型的對象
時間() 返回時間類對象
今天() 以 tzinfo 為 None 返回本地 DateTime
序數() 返回日期的預測公曆序數,其中第 1 年的 1 月 1 日有序數 1
名稱() 返回時區的名稱
utcfromtimestamp() 從 POSIX 時間戳返回 UTC
utcoffset() 返回 UTC 偏移量
utcnow() 返回當前 UTC 日期和時間
工作日() 以整數形式返回星期幾,其中星期一為 0,星期日為 6
時間增量類
Python timedelta類用於計算日期差異,也可用於 Python 中的日期操作。這是執行日期操作的最簡單方法之一。
構造函數語法:
類 datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, week=0)
返回:日期
範例 1:向 datetime 對象添加天數
輸出:
初始日期 2019-10-25 12:01:01.227848
future_date_after_2yrs: 2021-10-24 12:01:01.227848
future_date_after_2days:2019-10-27 12:01:01.227848
範例 2:兩個日期和時間之間的差異
使用此類也可以找到日期和時間差異。
輸出:
初始日期 2019-10-25 12:02:32.799814
new_final_time 2019-10-27 12:02:32.799814
時差:2天,0:00:00
Timedelta 類支持的操作
操作員 描述
加法 (+) 添加並返回兩個 timedelta 對象
減法 (-) 減去並返回兩個 timedelta 對象
乘法 (*) 將 timedelta 對象與 float 或 int 相乘
分配 (/) 將 timedelta 對象除以 float 或 int
樓層劃分 (//) 將 timedelta 對象除以 float 或 int 並返回輸出的 int of floor 值
模數 (%) 將兩個 timedelta 對象相除並返回餘數
+(時間增量) 返回相同的 timedelta 對象
-(時間增量) 返回 -1*timedelta 的結果
絕對(時間增量) 如果 timedelta.days > 1=0 則返回 +(timedelta) 否則返回 -(timedelta)
str(時間增量) 返回格式為 (+/-) day[s], HH:MM:SS.UUUUUU 的字符串
代表(時間增量) 以構造函數調用的形式返回字符串表示
格式化日期時間
格式化日期時間可能非常必要,因為日期表示可能因地而異。就像在某些國家,它可以是 yyyy-mm-dd,而在其他國家,它可以是 dd-mm-yyyy。要格式化 Python 日期時間,可以使用 strptime 和 strftime 函數。
Python 日期時間 strftime
strftime() 方法將給定的日期、時間或日期時間對象轉換為給定格式的字符串表示形式。
範例:Python 日期時間格式
# Python program to demonstrate
# strftime() function
from datetime import datetime as dt
# Getting current date and time
now = dt.now()
print("Without formatting", now)
# Example 1
s = now.strftime("%A %m %-Y")
print('\nExample 1:', s)
# Example 2
s = now.strftime("%a %-m %y")
print('\nExample 2:', s)
# Example 3
s = now.strftime("%-I %p %S")
print('\nExample 3:', s)
# Example 4
s = now.strftime("%H:%M:%S")
print('\nExample 4:', s)
輸出
沒有格式化 2021-08-19 18:16:25.881661
範例 1:2021 年 8 月 8 日星期四
範例 2:週四 8 月 21 日
範例 3:下午 6 點 25 點
範例 4:18:16:25
注意:有關詳細信息,請參閱strftime() 方法。
Python 日期時間 strptime
strptime() 從給定的字符串創建一個日期時間對象。
範例:日期時間 strptime
輸出
1999-05-25 02:35:08.023000
1999-05-26 12:45:00.003000
1999-05-27 07:35:05.523000
1999-05-28 05:15:55.523000
處理 Python DateTime 時區
DateTime 中的時區可用於可能希望根據特定區域的時區顯示時間的情況。這可以使用 Python 的pytz 模組來完成。該模組提供日期時間轉換功能,並幫助用戶服務於國際客戶群。
輸出
2021-08-19 18:27:28 UTC+0000
2021-08-19 23:57:28 IST+0530
2021-08-19 21:27:28 EEST+0300
2021-08-19 14:27:28 EDT-0400