在Python中将时间转换为小时分钟和秒

时间:2020-02-23 14:42:34  来源:igfitidea点击:

在本教程中,我们将讨论时间。
不用担心,这不是无聊的历史教程,而是我们将研究将秒数的时间转换为小时,分钟和秒的时间的不同方法。

展望未来,我们将以小时,分钟和秒为单位的时间称为首选格式。

它看起来像:

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

时间模块还使您可以选择显示一些其他信息,例如日,月和年。

%adisplay abbreviated weekday name.
%Adisplay full weekday name.
%bdisplay abbreviated month name.
%Bdisplay full month name.
%cdisplay the appropriate date and time representation.
%ddisplay 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