在這個教程中,我們將討論時間。不用擔心,這不是一個無聊的歷史教程,相反,我們將探討將以秒為單位的時間轉換為以小時、分鐘和秒為單位的時間的不同方法。
往後,我們將稱以小時、分鐘和秒為單位的時間為首選格式的時間
它會是這樣的:
2:46:40
讓我們花些時間思考手頭上的問題。毫無疑問,Python有很棒的模塊可以為我們進行轉換。但在轉向使用內置模塊之前,讓我們先嘗試編寫自己的程序。
構建自定義函數將時間轉換為小時、分鐘和秒
為了編寫我們自己的轉換函數,我們首先需要從數學角度思考問題。
如何將秒轉換為首選格式?
你需要獲取小時、分鐘和秒的值
我們將假設以秒為單位的時間不超過一天的總秒數。如果超過,我們將用一天的總秒數除以該時間,並取餘數。
數學上表示為:
seconds = seconds % (24 * 3600)
%運算符給出餘數。
24*3600 因為一小時有 3600 秒(60*60),一天有 24 小時。
在此之後,我們可以繼續計算從秒數中獲取小時值。
1. 獲取小時值
要從秒數中獲取小時值,我們將使用 地板除法運算符(//)。
它返回商的 整數部分。
由於我們需要小時數,所以我們將總秒數(n)除以一小時的總秒數 (3600)
數學上表示為:
hour = seconds // 3600
在這之後,我們需要計算分鐘數。
2. 獲取分鐘值
為了計算分鐘值,我們需要先將總秒數除以 3600,然後取餘數。
數學上表示為:
seconds = seconds % 3600
現在,為了從上述結果中計算分鐘值,我們將再次使用地板除法運算符。
minutes = seconds // 60
A minute has sixty seconds hence we floor the seconds value with 60.
計算完分鐘值後,我們可以繼續計算我們所選格式的秒值。
3. 獲取秒值
為了獲取秒值,我們需要再次將總秒數除以一分鐘的秒數(60),並取餘數。
數學上是這樣做的:
seconds = seconds % 60
這將給出我們所需的秒值,以適應我們的格式。
4. 完整代碼
讓我們將上述知識編譯成一個Python函數。
def convert_to_preferred_format(sec):
sec = sec % (24 * 3600)
hour = sec // 3600
sec %= 3600
min = sec // 60
sec %= 60
print("seconds value in hours:",hour)
print("seconds value in minutes:",min)
return "%02d:%02d:%02d" % (hour, min, sec)
n = 10000
print("Time in preferred format :-",convert(n))
輸出:
seconds value in hours: 2
seconds value in minutes: 46
Time in preferred format :- 02:46:40
使用時間模塊
現在讓我們來看一個內置模塊,它讓我們能夠在一行代碼中將秒數轉換為我們所選格式。
時間模組定義了 Unix 系統中的紀元為 1970 年 1 月 1 日 00:00:00 (UTC)(系統相關)。紀元基本上是電腦的時間起點。可以將其視為第 0 天。每當使用時間模組轉換秒數時,紀元都被用作參考點。
要在您的系統中輸出紀元,請使用以下程式碼:
time.gmtime(0)
要將秒數轉換為所需的格式,請使用以下程式碼:
time.strftime("%H:%M:%S", time.gmtime(n))
此行將秒數作為 ‘n’ 輸入,然後允許您分別輸出小時、分鐘和秒數。
完整的 Python 程式碼如下:
import time
n=10000
time_format = time.strftime("%H:%M:%S", time.gmtime(n))
print("Time in preferred format :-",time_format)
輸出:
Time in preferred format :- 02:46:40
時間模組還提供了顯示其他一些信息的選項,例如日期、月份和年份。
%a |
display abbreviated weekday name. |
%A |
display full weekday name. |
%b |
display abbreviated month name. |
%B |
display full month name. |
%c |
display the appropriate date and time representation. |
%d |
display day of the month as a decimal number [01,31]. |
讓我們嘗試使用 %a 和 %b。
import time
n=100000000000
time_format = time.strftime("Day: %a, Time: %H:%M:%S, Month: %b", time.gmtime(n))
print("Time in preferred format :-",time_format)
輸出:
Time in preferred format :- Day: Wed, Time: 09:46:40, Month: Nov
使用 DateTime 模組
您還可以使用 timedelta 方法在 DateTime 模組 下將秒數轉換為所需的格式。
它顯示自紀元以來經過的天數、小時數、分鐘數和秒數。
以下是使用Datetime模块将秒转换为首选格式的Python代码:
import datetime
n= 10000000
time_format = str(datetime.timedelta(seconds = n))
print("Time in preferred format :-",time_format)
输出:
Time in preferred format :- 115 days, 17:46:40
结论
本教程介绍了三种不同的方法,可用于将秒转换为小时、分钟和秒。总体而言,解决这个问题有两种主要的方法。
一种是编写自己的函数,另一种是使用内置模块。我们首先编写了自己的函数,然后查看了time和DateTime模块。
Source:
https://www.digitalocean.com/community/tutorials/python-convert-time-hours-minutes-seconds