В этом уроке мы будем говорить о времени. Не волнуйтесь, это не скучный урок истории, скорее мы рассмотрим различные способы преобразования времени в секундах в время в часах, минутах и секундах.
Далее мы будем ссылаться на время в часах, минутах и секундах как на время в предпочитаемом формате
. Оно будет выглядеть следующим образом:
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