在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

使用 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

结论

本教程介绍了三种不同的方法,您可以使用这些方法将秒转换为小时、分钟和秒。总体上有两种不同的方法可以解决这个问题。

要么您编写自己的函数,要么使用内置模块。我们首先编写了自己的函数,然后查看了timeDateTime模块。

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