如何在 Python 中計算時差
已發表: 2022-01-23在 Python 中處理日期和時間時,您通常需要計算時間差。 在本教程中,您將學習如何以小時、分鐘和秒為單位計算兩個時間戳之間的差異。
在本教程結束時,您將學會:
- 如何使用 Python 的
datetime
模塊處理日期和時間, - 什麼是
timedelta
對象,以及它們的用途,以及 - 計算任意兩個時間戳之間的時間差——以小時、分鐘和秒為單位。
讓我們開始吧。
如何使用 Python 的 datetime 模塊
要在 Python 中處理日期和時間,您將使用datetime
模塊。 datetime
模塊是 Python 標準庫的一部分。 因此,您可以立即將其導入您的工作環境,如下所示:
import datetime
為了計算時間差,您需要創建兩個不同的時間戳。 您可以選擇創建:
- 兩個
date
對象, - 兩個
time
對象,或 date
和time
的組合——datetime
時間對象。
如何在 Python 中創建日期對象
讓我們從 datetime 模塊導入date
類。 要在 Python 中創建日期對象,可以使用通用語法datetime.date(<year>,<month>,<day>)
。 下面是創建date
對象date1
的示例:
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27
您可以嘗試 Geekflare Python 編譯器上的代碼進行測試。 或者,在您的計算機上安裝 Python。
如上所示,當您打印日期時,日期的格式為YYYY-MM-DD
格式。
注意:請務必將月份指定為不帶任何前導零的整數。 在寫下日期時,您可能習慣於在月份中添加前導零。
例如,要指定 6 月的日期,即一年中的第 6 個月:使用 6 而不是 06。
例如,嘗試運行以下代碼片段 - 其中月份被提及為03
而不是僅3
。 你會看到它拋出了一個語法錯誤,如下所示:
date1 = datetime.date(2022,03,27) print(date1) # Error Message File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token
現在讓我們看看如何在 Python 中創建time
對象。
如何在 Python 中創建時間對象
要創建時間對象,讓我們導入time
類。 通過指定以下類屬性,可以使用time
類創建任何 Python 時間對象: hour
、 minute
、 second
和microsecond
。
但是,所有這些屬性都是可選的。 如果您不指定某個屬性,例如second
,則默認設置為0
。
以下代碼片段顯示瞭如何創建時間對象time1
。 與date
對像一樣,您可以打印出time
對像以查看格式化的時間。
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600
如何在 Python 中創建日期時間對象
如您所見, date
對像沒有關於時間的信息。 並且time
對像不包含有關日期的信息。
但是,在實踐中,您將需要日期和時間信息。 所以建議改用datetime
類。
您可以在 Python 中訪問datetime
類並創建datetime
對象,如下所示:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000
現在讓我們創建另一個沒有second
屬性的日期時間對象dt2
。 您可以看到它設置為0
- 默認值。
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00
到目前為止,您已經學習瞭如何在 Python 中創建時間戳——作為日期、時間和日期時間。 現在是時候看看如何計算任意兩個時間戳之間的差異了。
前往下一部分以找出答案。
如何在 Python 中使用 timedelta 對象
在 Python 中, timedelta
表示時間跨度。 這是兩個date
、 time
或datetime
對象之間的區別。
如果您添加或減去兩個date
、 time
或datetime
對象,您將獲得一個timedelta
對象。 這個timedelta
對象具有有用的屬性和方法,可以幫助計算時間差。
讓我們繼續計算兩個datetime
時間對象dt1
和dt2
之間的差異。
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) dt2 = datetime.datetime(2022,6,30,14,28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'>
從上面的代碼片段中,您可以看到tdelta
變量保存dt1
和dt2
之間的時間差。 並且使用 Python 的內置type()
函數驗證timedelta
的類型屬於tdelta
類。

現在讓我們編寫另一個示例。
如何查找兩個日期之間的時差
讓我們舉一個簡單但有趣的例子。
問題:計算當前日期(今天)和您的生日之間的時間差。
為此,請將今天設置為第一個時間戳,並將您的生日設置為第二個時間戳。
第一步,讓我們創建兩個datetime
時間對象:
- 一個今天的,讓我們
today
稱之為,和 - 另一個作為你的生日,我們就叫它
bday
吧
datetime
類具有now()
方法,可以為您提供當前的本地日期和時間。 所以讓我們使用它來獲取today
——我們的參考日期。
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538
在下面的代碼中,將bday
替換為您的生日,以計算您今年生日的剩餘時間。
如果您在過生日後閱讀此內容,請隨時將bday
設置為您的下一個生日。
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00
下一步是計算time_diff
,它是一個timedleta
對象,如前所述。 只需從您的bday
中減去today
,您就會得到時差。
time_diff = bday - today print(f"Your birthday is in {time_diff}") # Output Your birthday is in 220 days, 2:46:00.127416
要知道剩余天數,請使用time_diff
上的 days 屬性,如下所示:
tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.
如何找到以秒為單位的時差
現在讓我們計算距離您的生日還有多少秒。
要以秒為單位計算總時間差,請在timedelta
對象time_diff
上使用total_seconds()
方法。
tsecs = time_diff.total_seconds() print(f"Your birthday is {tsecs} seconds away.") # Output Your birthday is 19017960.127416 seconds away.
嗯,等待的時間太長了!
也就是說,您現在知道如何計算任意兩個時間戳之間的時間差(以秒為單位)。
現在讓我們重新審視一些基礎知識並寫下以下內容。 一天由24小時組成,一個小時是60分鐘,60秒是一分鐘。
這總結在下圖中:

因此,要將秒轉換為分鐘、小時和天,可以使用下表,並除以相應的轉換因子。

在接下來的部分中,讓我們將時差以秒為單位轉換為分鐘和小時。
如何找到以分鐘為單位的時差
要獲得以分鐘為單位的時差,只需將總秒數除以 60。
讓我們將tsecs
除以 60,並將其存儲在一個名為tmins
的變量中,如下所示:
tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.
如何找到以小時為單位的時差
現在您已經計算了以分鐘為單位的時間差,您可以將其除以 60 以得到以小時為單位的時間差。 或者您可以將總秒數除以 60*60 = 3600。
thrs = tsecs/(60*60) print(f"Your birthday is {thrs} hours away.") # Output Your birthday is 5282.76670206 hours away.
因此,您現在已經學會瞭如何以您選擇的任何單位計算時差。
結論
在本教程中,您學習瞭如何:
- 使用 Python 的
datetime
模塊創建和處理日期和時間, - 使用
timedelta
對象獲取時間跨度或時間差,以及 - 計算以秒、分鐘和小時為單位的時間差。
希望本教程對您有所幫助。 既然您已經了解了在 Python 中計算時差的所有知識,那麼是時候將您的技能付諸實踐了。
快樂的學習和編碼!
在此處了解如何編寫等於或不等於代碼或在 python 中製作蛇遊戲。