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 對象

python-datetime-module

輸出:

作為參數傳遞的日期是 1996-12-11

python-datetime-module

範例 2:獲取當前日期

使用日期類的今天()函數返回當前本地日期。today() 函數帶有幾個屬性(年、月和日)。這些可以單獨列印。

python-datetime-module

輸出

今天的日期是2021-08-19

範例 3:獲取今天的年月日

我們可以使用日期類的年月日屬性從日期對像中獲取年月日屬性。

python-datetime-module

輸出

當年:2021
本月:8
當天:19

範例 4:從時間戳獲取日期

我們可以使用 fromtimestamp() 方法從時間戳 y=創建日期對象。時間戳是從 1970 年 1 月 1 日 UTC 到特定日期的秒數。

python-datetime-module

輸出

時間戳的日期時間:2029-10-25 16:17:48

範例 5:將日期轉換為字符串

我們可以使用兩個函數 isoformat() 和 strftime() 將日期對象轉換為字符串表示。

python-datetime-module

輸出

字符串表示 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:獲取小時、分鐘、秒和微秒

創建時間對像後,也可以單獨列印其屬性。

python-datetime-module

輸出:

小時 = 11
分鐘 = 34
第二 = 56
微秒 = 0

範例 3:將 Time 對象轉換為字符串

我們可以使用 isoformat() 方法將時間對象轉換為字符串。

python-datetime-module

輸出

字符串表示: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 對象

python-datetime-module

輸出:

1999-12-12 00:00:00
1999-12-12 12:12:12.342380

範例 2:獲取年、月、小時、分鐘和時間戳

創建 DateTime 對像後,也可以單獨列印其屬性。

python-datetime-module

輸出:

年 = 1999
月 = 12
小時 = 12
分鐘 = 12
時間戳 = 945000732.0

範例 3:當前日期和時間

您可以使用 Datetime.now() 函數列印當前日期和時間。now() 函數返回當前的本地日期和時間。

python-datetime-module

輸出:

當前日期和時間是 2019-10-25 11:12:11.289834

範例 4:將 Python 日期時間轉換為字符串

我們可以使用datetime.strftime和 datetime.isoformat 方法 在 Python 中將 Datetime 轉換為字符串。

python-datetime-module

輸出

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 對象添加天數

python-datetime-module

輸出:

初始日期 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:兩個日期和時間之間的差異

使用此類也可以找到日期和時間差異。

python-datetime-module

輸出:

初始日期 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

python-datetime-module

輸出

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 模組來完成。該模組提供日期時間轉換功能,並幫助用戶服務於國際客戶群。

python-datetime-module

輸出

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