如何在 Python 中計算時差

已發表: 2022-01-23

在 Python 中處理日期和時間時,您通常需要計算時間差。 在本教程中,您將學習如何以小時、分鐘和秒為單位計算兩個時間戳之間的差異。

在本教程結束時,您將學會:

  • 如何使用 Python 的datetime模塊處理日期和時間,
  • 什麼是timedelta對象,以及它們的用途,以及
  • 計算任意兩個時間戳之間的時間差——以小時、分鐘和秒為單位。

讓我們開始吧。

如何使用 Python 的 datetime 模塊

要在 Python 中處理日期和時間,您將使用datetime模塊。 datetime模塊是 Python 標準庫的一部分。 因此,您可以立即將其導入您的工作環境,如下所示:

 import datetime

為了計算時間差,您需要創建兩個不同的時間戳。 您可以選擇創建:

  • 兩個date對象,
  • 兩個time對象,或
  • datetime的組合—— 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 時間對象: hourminutesecondmicrosecond

但是,所有這些屬性都是可選的。 如果您不指定某個屬性,例如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表示時間跨度。 這是兩個datetimedatetime對象之間的區別。

如果您添加或減去兩個datetimedatetime對象,您將獲得一個timedelta對象。 這個timedelta對象具有有用的屬性和方法,可以幫助計算時間差。

讓我們繼續計算兩個datetime時間對象dt1dt2之間的差異。

 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變量保存dt1dt2之間的時間差。 並且使用 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 中製作蛇遊戲。