在这个教程中,我们将讨论时间。别担心,这不是一堂无聊的历史课,相反,我们将探讨将以秒为单位的时间转换为以小时、分钟和秒为单位的时间的不同方法。
在接下来的内容中,我们将把时间表示为按照首选格式的时间
,它将呈现为:
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
使用 Time 模块
现在让我们看一下一个内置模块,它让我们可以用一行代码将秒数转换为我们的首选格式。
时间模块定义了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
使用日期时间模块
您还可以在日期时间模块下使用时间差方法将秒转换为首选格式。
它显示自纪元以来经过的天数、小时、分钟和秒。
Python使用Datetime模块将秒转换为首选格式的代码如下:
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