在 Python 中將時間轉換為小時、分鐘和秒

在這個教程中,我們將討論時間。不用擔心,這不是一個無聊的歷史教程,相反,我們將探討將以秒為單位的時間轉換為以小時、分鐘和秒為單位的時間的不同方法。

往後,我們將稱以小時、分鐘和秒為單位的時間為首選格式的時間

它會是這樣的:

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

结论

本教程介绍了三种不同的方法,可用于将秒转换为小时、分钟和秒。总体而言,解决这个问题有两种主要的方法。

一种是编写自己的函数,另一种是使用内置模块。我们首先编写了自己的函数,然后查看了timeDateTime模块。

Source:
https://www.digitalocean.com/community/tutorials/python-convert-time-hours-minutes-seconds