在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 Epoch

将秒数转换为首选格式,使用以下代码行:

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

结论

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

要么你编写自己的函数,要么使用一个内置模块。我们开始时编写了自己的函数,然后查看了时间和日期模块。

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds