在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
一分钟有60秒,因此我们将秒值设置为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模块将秒转换为首选格式的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