在Python中将时间转换为小时、分钟和秒钟
在本教程中,我们将讨论时间。不用担心,这不是一堂无聊的历史课,相反,我们将研究将以秒为单位的时间转换为小时、分钟和秒的不同方法。
未来我们将以小时、分钟和秒来引用时间,作为首选格式。
它会看起来像:
2:46:40
让我们花点‘时间’思考一下手头的问题。毫无疑问,Python有一些了不起的模块可以为我们进行转换。但在我们继续使用内建模块之前,让我们先尝试编写自己的程序。
构建一个自定义函数,将时间转换为小时、分钟和秒钟。
我们要编写我们自己的转换函数,首先需要从数学角度思考这个问题。
你如何将秒数转换为首选格式?
你需要获取小时、分钟和秒钟的值。
我们假设时间以秒为单位,不超过一天的总秒数。如果超过,我们将用一天的总秒数除以时间,取余数。
这在数学上的表示方式是:
seconds = seconds % (24 * 3600)
% 运算符给出了余数。
24*3600,因为一个小时有3600秒(60*60),一个天有24小时。
在这之后,我们可以继续计算出从秒数转换为小时数的值。
获取小时值
为了从秒钟中获取小时值,我们将使用取整除法运算符(//)。
它返回商的整数部分。
由于我们需要小时数,我们将总秒数(n)除以一小时的总秒数(3600)来得到。
数学上,这可以表示为:
hour = seconds // 3600
之后我们需要计算分钟。
获取分钟值
要计算分钟的值,我们需要先将总秒数除以3600并取余。
数学上的表示是:
seconds = seconds % 3600
现在我们要通过以上结果来计算分钟的值,我们将再次使用floor运算符。
minutes = seconds // 60
一分钟有六十秒,因此我们将秒钟的值取整为60。
在计算分钟值之后,我们可以继续计算所选格式的秒值。
获取秒数
要得到秒数值,我们需要再次将总秒数除以一分钟的秒数(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(协调世界时)(系统相关)。纪元基本上是计算机时间的起点。可以将其视为第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
结论
本教程介绍了三种不同的方法,可以将秒转换为小时、分钟和秒。大致上,解决这个问题有两种不同的方式。
要么你编写自己的函数,要么使用一个内置模块。我们开始时编写了自己的函数,然后查看了时间和日期模块。