Преобразование времени в часы, минуты и секунды в 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

Используя модуль времени

Теперь давайте рассмотрим встроенный модуль, который позволяет нам конвертировать секунды в наш предпочтительный формат одной строкой кода.

Модуль времени определяет эпоху как 1 января 1970 года, 00:00:00 (UTC) в системах Unix (зависит от системы). Эпоха в основном представляет собой начало времени для компьютера. Представьте это как день 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 для преобразования секунд в предпочтительный формат с использованием модуля 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