- Модуль time
- Текущее время в Python
- Методы
- Форматированный вывод
- Применение метода sleep
- Время выполнения программы
- monotonic
- Заключение
- Преобразование времени в часы, минуты и секунды в Python
- Создание пользовательской функции
- 1. Как получить значение часа?
- 2. Как получить значение минуты?
- 3. Как получить значение секунд?
- 4. Полный код
- Использование модуля времени
- Использование модуля Datetime
- Заключение
Модуль time
Модуль time из стандартной библиотеки языка программирования Python содержит массу полезных методов для работы со временем. С его помощью можно получать информацию о текущей дате и времени с точностью до миллисекунд, выводить эти сведения в необходимом формате, а также управлять ходом выполнения программы, добавляя задержки по таймеру.
Текущее время в Python
Работа методов из модуля time основывается на общепринятой системе описания времени, которая справедлива для Unix, а также для POSIX-совместимых ОС. Согласно ее концепции, текущее время представляется в виде обыкновенного вещественного значения в секундах, прошедших с момента начала эпохи и до сегодняшнего дня. Отправной точкой для времени считается 1 января 1970 года, когда счетчик секунд имел полностью нулевое значение.
С тех пор это число постоянно растет, позволяя людям работать с различными видами дат в максимально точном представлении. В случае необходимости секунды переводятся в часы, дни, месяцы и годы, предоставляя пользователю удобный вид отображения времени. Чтобы увидеть количество секунд, прошедших с момента начала эпохи, достаточно вызвать метод time(). Но перед этим необходимо подключить модуль time с помощью операции импорта.
Как можно увидеть из данного примера, функция print получает в качестве единственного параметра число, возвращенное из метода time(), после чего выводит его на экран. Таким образом, с 1 января 1970 года прошло уже более полтора миллиарда секунд. Но подобное представление времени совсем неудобно для пользователя программы. Чтобы отобразить текущую дату в более комфортном виде, стоит передать функции print результат работы метода ctime(), не забыв произвести импорт соответствующей ему библиотеки time.
В результате выполнения вышеописанной программы на экране будут отображены точные сведения о текущем времени, которые включают в себя день недели, название месяца, его число, часы, минуты, секунды и год. Кроме того, в качестве параметра методу ctime() можно передать любое значение в секундах, полученное при помощи упомянутого ранее time().
Методы
Для работы с временем в стандартной библиотеке языка Python имеется множество самых разных методов. Наиболее популярные функции, реализованные в модуле time, описаны в следующей таблице. Здесь можно найти их название, а также краткую характеристику.
Метод | Характеристика |
time() | возвращает текущее время, прошедшее с начала 1970 года в секундах |
ctime(s) | возвращает местное время в строке или время, полученное из s секунд |
clock() | возвращает процессорное время, прошедшее с момента первого вызова этой функции, точность больше 1 микросекунды |
sleep(s) | останавливает ход выполнения программы ровно на s секунд |
strftime(s) | преобразует переданное в качестве аргумента время s в строку по формату |
strptime(s) | разбирает строку s и преобразует в объект времени по формату |
mktime(s) | преобразует время s в количество секунд с начала 1970 года |
localtime(s) | возвращает объект, представляющий местное время или время s |
Форматированный вывод
Принцип работы метода ctime() заключается в представлении секундного вещественного значения в более удобном виде, благодаря автоматическому форматированию. Некоторым пользователям предложенный подобным образом вывод данных может показаться чересчур сложным для восприятия либо же недостаточно информативным. Именно поэтому методы модуля time позволяют создавать свои уникальные типы форматирования для дат. В данном случае речь пойдет о функции strftime, принимающей в качестве параметров текущее время и шаблон, который будет использоваться для форматирования полученного объекта.
В следующем примере демонстрируется вывод значения, переданного функцией localtime() в strftime. То есть, мы в Python получим текущее время и выведем его в отформатированном виде. Первым аргументом метода strftime является строка с некоторым набором правил для форматирования, каждое из которых указано при помощи символа %. В результате, на экране выводится информация, включающая название месяца, число и год.
Существует большое количество символов форматирования, отвечающих за отображение отдельных свойств объекта, представляющего собой дату. Важно запомнить, что каждое новое правило необходимо отделять знаком %. Все доступные типы форматов для вывода данных о времени подробно описаны в следующей таблице. Их можно передавать методу strftime в любом порядке, помещая в строковый литерал, который служит параметром.
Формат | Свойство |
%a | короткое название дня недели |
%A | полное название дня недели |
%b | короткое название месяца |
%B | полное название месяца |
%c | дата и время |
%d | день месяца |
%H | количество часов в 24-часовом формате |
%I | количество часов в 12-часовом 1формате |
%j | день года |
%m | номер месяца |
%M | количество минут |
%p | до или после полудня для 12-часового формата |
%S | количество секунд |
%U | номер недели в году, начиная с воскресенья |
%w | номер дня недели |
%W | номер недели в году, начиная с понедельника |
%x | дата |
%X | время |
%y | год без указания века |
%Y | полное представление года |
%Z | название часового пояса |
%% | символ процента |
Применение метода sleep
Выполнение многих задач в программировании так или иначе связано с течением времени. Иногда программа должна прекращать ход своего выполнения на определенное количество секунд, минут или часов. Это вполне может потребоваться в тех случаях, когда компьютер взаимодействует с какой-либо внешней системой, например, базой данных, которая должна завершить выполнение собственных задач, прежде чем перейти к следующему действию.
Перевести программу в ждущий режим, временно заморозив ее работу, можно при помощи метода sleep, доступного в модуле time. Его единственным аргументом является количество секунд, которое следует выждать программе, прежде чем перейти к дальнейшему шагу из прописанного алгоритма. В следующем фрагменте кода функция sleep работает 10 секунд.
Как можно увидеть из результатов выполнения кода, вначале на экран выводится стартовое сообщение, после чего программа прекращает свою работу ровно на 10 секунд, поскольку метод sleep получает переменную pause в качестве аргумента. Затем отображается последняя запись, информирующая пользователя о том, какое количество секунд длилась задержка.
Таким образом, чтобы сделать задержку в 100 миллисекунд, надо написать time.sleep(0.1) .
Время выполнения программы
Существует множество разных задач, для решения которых нужно найти время, потраченное на работу программы либо отдельных ее блоков. Чтобы найти данную величину, достаточно посчитать разницу в секундах между точкой старта определенной функции и местом, где она завершает свою работу. В следующем примере демонстрируется применение методов time() для получения текущего времени, чтобы в конечном итоге выявить, как долго работал блок кода. Метод sleep() здесь увеличивает время выполнения программы на 5 секунд.
Несмотря на простоту вышеописанного подхода, использовать его в серьезных целях, где требуется точный и независимый от ОС результат, не рекомендуется. Все дело в том, что числовое значение времени, получаемое таким образом, может иметь погрешности за счет внутренних особенностей работы компьютера, в среде которого выполняется программа. Например, системные часы могут быть подкорректированы вручную пользователем во время выполнения программы. Корректировка может произойти и автоматически, если настроена синхронизация системных часов по NTP.
Таким образом, может случиться такая ситуация, что функция вернет значение меньшее, чем при предыдущем вызове.
monotonic
По этой причине лучше всего использовать метод monotonic(), впервые появившийся в версии Python 3.3 на некоторых платформах, а начиная с выпуска 3.5 ставший доступным абсолютно везде. Его главной особенностью является точное представление измеряемого количества времени, вне зависимости от работы ОС и текущей платформы. Используемый таймер никогда не вернет при повторном вызове метода значение, которое будет меньше предыдущего. Это позволяет избежать многих ошибок, а также неожиданного поведения.
В примере программы, описанном выше, продемонстрирована работа функции monotonic(). Принцип ее применения такой же, как и в предыдущем примере, однако здесь результат обладает гарантированной точностью и независим от внешних условий. Для отображения времени в более комфортной форме используется небольшое форматирование результата.
Заключение
Используя стандартный библиотечный модуль time в Python 3, можно всячески взаимодействовать с информацией о текущем времени. Таким образом, использование библиотеки дает возможность:
- Прерывать выполнение программы на заданное количество секунд.
- Отображать информацию о времени, прошедшем с начала эпохи.
- Преобразовывать значение системного времени к удобному виду.
- Измерять время выполнения программы целиком или ее отдельных модулей.
Источник
Преобразование времени в часы, минуты и секунды в Python
В этом уроке мы будем говорить о времени. Рассмотрим различные способы преобразования времени в секундах во время в часах, минутах и секундах.
Двигаясь вперед, мы будем называть время в часах, минутах и секундах предпочтительным форматом.
Это будет выглядеть так:
Давайте потратим немного «времени» и подумаем о проблеме. Несомненно, у python есть удивительные модули, которые могут сделать преобразование за нас. Но давайте сначала попробуем написать нашу собственную программу, прежде чем мы перейдем к встроенным модулям.
Создание пользовательской функции
Чтобы написать нашу собственную функцию преобразования, нам сначала нужно подумать о проблеме математически.
Как перевести секунды в предпочтительный формат? Вам нужно получить значение часов, минут и секунд.
Предположим, что время в секундах не превышает общего количества секунд в сутках. Если это так, мы разделим его на общее количество секунд в день и возьмем остаток.
Математически это представлено как:
Оператор% дает остаток.
24 * 3600, поскольку в одном часе 3600 секунд (60 * 60), а в одном дне 24 часа.
После этого мы можем продолжить и вычислить значение часа из секунд.
1. Как получить значение часа?
Чтобы получить значение часа из секунд, мы будем использовать оператор деления (//). Он возвращает целую часть частного.
Поскольку нам нужно количество часов, мы разделим общее количество секунд (n) на общее количество секунд в часе (3600).
Математически это представлено как:
После этого нам нужно посчитать минуты.
2. Как получить значение минуты?
Чтобы вычислить значение минут, нам нужно сначала разделить общее количество секунд на 3600 и взять остаток.
Математически это представлено как:
Теперь, чтобы вычислить значение минут из приведенного выше результата, мы снова будем использовать оператор floor.
В минуте шестьдесят секунд, поэтому мы уменьшаем значение секунд до 60.
После вычисления значения минут мы можем перейти к вычислению значения секунд для нашего предпочтительного формата.
3. Как получить значение секунд?
Чтобы получить значение секунд, нам снова нужно разделить общее количество секунд на количество секунд в одной минуте (60) и взять остаток.
Математически это делается следующим образом:
Это даст второе значение, которое нам нужно для нашего предпочтительного формата.
4. Полный код
Давайте скомпилируем вышеупомянутые знания в функции Python.
Использование модуля времени
Теперь давайте посмотрим на встроенный модуль, который позволяет нам конвертировать секунды в наш предпочтительный формат в одной строке кода.
Модуль времени определяет эпоху как 1 января 1970 года, 00:00:00 (UTC) в системах Unix (зависит от системы). Эпоха – это, по сути, начало времени для компьютера. Думайте об этом как о floor 0. Всякий раз, когда мы конвертируем секунды с помощью модуля времени, эта эпоха используется как точка отсчета.
Чтобы вывести эпоху в вашей системе, используйте следующую строку кода:
Чтобы преобразовать секунды в предпочтительный формат, используйте следующую строку кода:
Эта строка принимает время в секундах как «n», а затем позволяет отдельно выводить часы, минуты и секунды.
Полный код Python выглядит следующим образом:
Модуль времени также дает вам возможность отображать дополнительную информацию, такую как день, месяц и год.
% а | Отображать сокращенное название дня недели. |
% А | Отображать полное название дня недели. |
% b | Отображать сокращенное название месяца. |
% B | Отображать полное название месяца. |
% c | Отобразить соответствующее представление даты и времени. |
% d | Отображать день месяца как десятичное число [01,31]. |
Попробуем использовать% a и % b.
Использование модуля Datetime
Вы также можете использовать метод timedelta в модуле DateTime для преобразования секунд в предпочтительный формат.
Он отображает время в днях, часах, минутах и секундах, прошедших с эпохи.
Код Python для преобразования секунд в предпочтительный формат с использованием модуля Datetime выглядит следующим образом:
Заключение
В этом руководстве были рассмотрены три различных способа преобразования секунд в часы, минуты и секунды. В целом есть два разных способа решения проблемы.
Вы либо пишете свою собственную функцию, либо используете встроенный модуль. Мы начали с написания нашей собственной функции, а затем посмотрели на модуль времени и DateTime.
Источник