как узнать дату и время python
Как получить текущую дату и время в Python
В этой статье мы узнаем, как получить текущую дату и время, используя встроенный в Python модуль datetime. С помощью этого модуля мы можем получить все соответствующие данные в одном объекте или извлечь дату и время отдельно.
Мы также узнаем, как настроить дату и время для разных часовых поясов. Наконец, мы рассмотрим преобразование объектов datetime в популярные метки времени Unix или Epoch.
Получение текущей даты и времени с datetime
Модуль datetime содержит различные классы, чтобы получить информацию о дате и времени:
Запуск этого файла даст нам следующий вывод:
Функция now() дала нам объект со всей датой и временем его создания. Когда мы его печатаем, Python автоматически форматирует объект в строку, чтобы люди могли его легко прочитать.
Вы можете получить отдельные атрибуты даты и времени следующим образом:
Метод now() идеально подходит для захвата текущего времени и даты. Однако, это излишне, когда вы заботитесь только о дате или времени, но не обоих. Как мы можем получить только информацию о дате?
Получение текущей даты
Есть два способа получить текущую дату в Python. В консоли Python мы можем получить дату из объекта datetime с помощью метода date() :
Тем не менее, это кажется пустой тратой на инициализацию объекта datetime только для захвата даты. Альтернативой может быть использование метода today() класса date :
Например, этот оператор print получает каждый атрибут, а также использует метод weekday() для получения дня недели:
Примечание: Метод weekday() возвращает целое число от 0 до 6 для представления дня недели. 0 соответствует понедельнику. Поэтому в нашем примере мы добавили 1, чтобы напечатать 5-й день недели (пятница), хотя метод weekday() вернул 4.
Теперь, когда мы можем получить текущую дату самостоятельно, давайте посмотрим, как мы можем получить текущее время
Получение текущего времени
Получение текущей даты и времени в другом часовом поясе
Метод now() принимает временную зону в качестве аргумента, так что объект datetime генерируется соответствующим образом. Во-первых, нам нужно получить данные о часовом поясе через библиотеку pytz.
Установите библиотеку pytz :
Теперь давайте используя pytz получим текущую дату и время, если бы мы были в Берлине:
berlin_current_datetime будет объектом datetime со всеми свойствами и функциями, которые мы видели ранее, но теперь он полностью соответствует часовому поясу Берлина.
Преобразование меток времени в даты и время
Компьютерные системы измеряют время на основе количества секунд, прошедших с начала эпохи Unix, то есть 00:00:00 UTC 1 января 1970 года. Приложения, базы данных и протоколы обычно используют временную метку для отображения времени.
Вы можете получить текущую метку времени в Python, используя модуль time :
fromtimestamp() по умолчанию возвращает объект datetime в вашем часовом поясе. Вы можете указать часовой пояс в качестве второго аргумента, если хотите, чтобы он был локализован по-другому.
Например, чтобы преобразовать метку времени в объект datetime в формате UTC, вы можете сделать это:
И наоборот, вы можете использовать метод timestamp() для преобразования объекта datetime в допустимую метку времени:
Вывод
Как использовать модуль datetime в Python
Datetime — важный элемент любой программы, написанной на Python. Этот модуль позволяет управлять датами и временем, представляя их в таком виде, в котором пользователи смогут их понимать.
datetime включает различные компоненты. Так, он состоит из объектов следующих типов:
Как получить текущие дату и время?
Получить текущую дату в Python
Класс date можно использовать для получения или изменения объектов даты. Например, для получения текущей с учетом настроек подойдет следующее:
Текущая дата — 2020-11-14 в формате год-месяц-день соответственно.
Получить текущее время
Для получения текущего локального времени сперва нужно получить текущие дату и время, а затем достать из этого объекта только время с помощью метода time() :
Компоненты datetime в Python
В этом руководстве речь пойдет о следующих элементах:
Как создавать объекты даты и времени
В этом примере создается объект времени представленный следующим образом (8, 48, 45).
Для создания объекта даты нужно передать дату с использованием следующего синтаксиса:
Вернет вот такой результат:
Timedelta
Все аргументы опциональные и их значения по умолчанию равно 0. Они могут быть целыми или числами с плавающей точкой, как положительными, так и отрицательными. Благодаря этому можно выполнять математические операции, такие как сложение, вычитание и умножение.
Как вычислить разницу для двух дат
Посмотрим на несколько примеров вычисления разницы во времени. Предположим, есть два объекта datetime :
Для получения разницы нужно лишь вычесть значение одного объекта из второго:
Таким образом между 2 и 30 октября 2020 года 28 дней.
Как вычислить разницу двух объектов datetime.time
Такой код вернет следующую ошибку:
Как получать прошлые и будущие даты с помощью timedelta
Поскольку timedelta — это длительность, то для получения прошлой или будущей даты нужно добавить объект timedelta к существующему или вычесть из него же. Вот пример нескольких уравнений, где n — это целое число, представляющее количество дней:
Если нужно, например, получить дату за прошлые две недели, то достаточно вычесть 14 дней из текущей даты:
Предположим, вы задумали практиковать определенный навык в течение 21 дня. Для получения будущей даты нужно добавить 21 день к текущей дате:
Другие арифметические операции с timedelta
Значения даты и времени могут сравниваться для определения того, какая из них была раньше или позже. Например:
Часовые пояса
Пока что мы работали с datetime без учета часовых поясов и летнего времени. Но прежде чем переходить к следующим пунктам, нужно разобраться с разницей в абсолютных (naive) и относительных (aware) датах.
Абсолютные даты не содержат информацию, которая бы могла определить часовой пояс или летнее время. Однако с такими намного проще работать.
Относительные же содержат достаточно информации для определения часового пояса или отслеживания изменений из-за летнего времени.
Разница между DST, GMT и UTC
Как работать с часовыми поясами
Рассмотрим, как создать простой относительный объект datetime :
Предположим, нужно получить текущее время для Найроби. Для этого нужно использовать конкретный часовой пояс. Для начала можно с помощью pytz получить все существующие часовые пояса.
Вот некоторые из них:
Для получения времени в Найроби:
А вот так можно получить время Берлина:
Здесь можно увидеть разницу в часовых поясах разных городов, хотя сама дата одна и та же.
Конвертация часовых поясов
При конвертации часовых поясов в первую очередь нужно помнить о том, что все атрибуты представлены в UTC. Допустим, нужно конвертировать это значение в America/New_York :
Другие практические примеры
Всегда храните даты в UTC. Вот примеры:
Как конвертировать строки в datetime
strptime() в Python — это метод из модуля datetime. Вот его синтаксис:
Аргументы формата необязательные и являются строками. Предположим, нужно извлечь текущие дату и время:
Работа с датой и временем в Python
Python содержит несколько инструментов, которые разработчик может использовать для работы с датой и временем. В данном разделе статье мы рассмотрим модули datetime и time. Мы изучим принципы их работы и способы их применения. Начнем с модуля datetime.
Модуль datetime
Мы изучим следующие классы модуля:
Благодаря этим классам мы в будущем сможем работать с большей частью случаев, в которых нам понадобятся объекты date и datetime. Также существует класс tzinfo, который применяется для работы с часовыми поясами. Для дополнительной информации об этом классе вы можете обратиться к документации Python.
datetime.date
Python может представлять даты различными способами. Для начала, рассмотрим формат datetime.date, так как это один из самых простых объектов date.
В данном коде показано, как создать простой объект даты. Класс date принимает три аргумента: год, месяц и день. Если вы укажите неправильное значение, вы увидите ошибку ValueError, как в случае выше. В противном случае вы увидите, что объект datetime.date вернулся. Давайте взглянем на еще один пример:
Здесь мы присваиваем объекту date переменную d. Теперь мы можем получить доступ к различным компонентам даты по названиям, таким как d.year или d.month. Давайте посмотрим, какой сейчас день:
Это может быть полезно, когда вам нужно записать, какой сейчас день. Или, если вам нужно выполнить основанный на сегодняшней дате расчет. Мелочь, а приятно.
datetime.datetime
Объект datetime.datetime содержит всю информацию объектов datetime.date плюс datetime.time. Давайте приведем несколько примеров, для лучшего понимания разницы между этим объектом, и объектом datetime.date.
Мы видим, что datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда. Это также позволяет вам указывать информацию о микросекундах и часовом поясе. При работе с базами данных, данные типы объектов будут использоваться достаточно часто. Большую часть вашей работы, вам нужно будет конвертировать форматы date или datetime Python в форматы SQL datetime или timestamp. Обратите внимание на то, что today совместно с datetime.datetime использует два разных метода:
Модуль datetime содержит другой метод, под названием strftime. Этот метод позволяет разработчику создавать строку, отображающую время в более понятной для человека форме. Существует целая таблица параметров форматирования, с которой рекомендуется ознакомиться в документации Python, в секции 8.1.7. Давайте взглянем на несколько примеров, показывающих всю полезность данного метода:
Первый пример – это скорее хитрость. В нем показано, как конвертировать сегодняшний объект datetime в строку, следующую за форматом YYYYMMDD (ГГГГММДД). Второй пример более наглядный.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
В нем мы присваиваем объект datetime переменной под названием today и применяем два разных параметра форматирования строки. Первый параметр добавляет косые черточки между элементами datetime, а также перегруппировывает datetime, теперь он делится на месяц, день и год. В последнем примере мы создаем временную отметку, которая следует типичному формату: YYYY-MM-DD.HH.MM.SS. Если вам нужно указать год как двухзначный (“YY”), вы можете заменить %Y на %y.
datetime.timedelta
Объект datetime.timedelta отображает длительность времени. Другими словами, это разница между двумя датами или временными отметками. Давайте взглянем на наглядный пример:
Мы создали два объекта datetime. Один указывает на сегодняшний день, второй – на прошедшую неделю. После этого, мы берем разницу между ними. Это возвращает объект timedelta, который мы можем далее использовать, чтобы выяснить, сколько прошло дней или секунд, между этими двумя датами. Если вам нужно узнать количество часов или минут между двумя датами, вам понадобится немножко математики, чтобы выяснить это. Давайте взглянем на проверенный способ:
Отсюда мы узнаем, что в неделе 186 часов и 13 минут. Обратите внимание на то, что мы используем двойную косую черту в качестве нашего оператора деления, также известного как floor division. Теперь мы готовы к тому, чтобы узнать больше о модуле time Python.
Модуль time
Модуль time открывает разработчику Python доступ к нескольким связанным со временем функциям. Модуль основан на «эпохе», точке, с которой начинается время. Для систем Unix, эпоха началась в 1970 году. Чтобы узнать, какая эпоха в вашей системе, попробуйте запустить следующий код:
Я запустил его на Windows 7, которая также уверена в том, что начало времен датируется 1970м годом. В любом случае, в данном разделе мы ознакомимся со следующими функциями:
Текущая дата и время в Python
Время и дата играют важнейшую роль при решении определенных задач в программировании. Разработчику на Python приходится нередко использовать точные значения текущей (current) даты, к примеру, при сохранении информации в базе данных, вычислениях, регистрации, обеспечении доступа и т. д. В этой статье пойдет разговор о том, как узнать текущие временные значения с помощью модуля datetime. Вдобавок к этому, читатель узнает о временных настройках для разных часовых поясов и преобразовании объектов datetime в метки времени Unix.
Получаем текущую дату и время
Datetime включает в себя разные классы, позволяющие получать нужные временные данные:
Для примера можно вывести в терминал текущую (current) дату и время. Можно воспользоваться объектом datetime.datetime — из него довольно просто извлекаются объекты date и time. Сначала следует импортировать требуемый модуль:
from datetime import datetime
Да, это выглядит странновато, т. к. речь идет о получении класса datetime из модуля datetime, однако это 2 разные вещи. Далее следует воспользоваться функцией now() — она позволит получить объект с текущим временем и датой.
from datetime import datetime
Набрав код выше, вы увидите на экране следующее (в вашем случае вывод изменится, ведь минуты не стоят на месте):
Что произошло? Функция now() отобразила объект, причем с датой и временем создания этого самого объекта. В результате была выведена соответствующая строка. Однако никто не мешает получить временные атрибуты отдельно:
Таким образом, метод now() вполне годится для получения текущей даты и времени. Но что делать, если надо получить лишь дату?
Работа с датой current
Существуют 2 способа получения текущей даты. Первый выводит нужные данные из объекта datetime посредством метода date() :
Во втором применяется метод today() класса date:
Класс datetime.date позволяет получать календарную дату. Также следует добавить, что его атрибуты (year, month, day) бывают доступны и отдельно, как в примере с datetime.
А как поступить, если надо отобразить текущее время отдельно от даты?
Работаем с текущим временем
Здесь отдельно получить часы, минуты, секунды и микросекунды не представляется возможным, да в этом и нет необходимости, т. к. само понятие времени суток не предполагает другого отображения.
Важно отметить, что есть возможность получить временные данные и с учетом нужного часового пояса (timezone). Как и что используется, поговорим ниже.
Другой часовой пояс: временные зоны (timezones)
Метод now() принимает в Python временную зону в качестве аргумента, так что объект datetime генерируется соответствующим образом.
Для получения информации с учетом часового пояса необходимо задействовать библиотеку pytz (если ее нет, потребуется инсталляция, для чего подойдет команда pip3 install pytz ).
Так как я нахожусь в Минске, давайте получим текущие временные значения (times) именно для Минска:
Строка в коде minsk_current_datetime является объектом datetime, то есть все то же самое, что и ранее, но уже в полном соответствии с часовым поясом Республики Беларусь.
Когда надо узнать время в UTC, тоже пригодится модуль pytz:
Получить время UTC можно и без модуля pytz, т. к. datetime имеет полезное свойство timezone. Что же, давайте задействуем свойство timezone:
Таким образом, можно без проблем преобразовать текущие даты и значения времени в различные часовые пояса.
Преобразование временных меток
Также может быть очень полезным преобразовывать время в один из самых широко применяемых форматов в вычислениях. Речь идет о временных метках Unix.
Доподлинно известно, что компьютерные системы измеряют время не так, как люди. Здесь за основу берется число секунд, которые прошли с начала Unix-эпохи, то есть с 00:00:00 UTC 1.01.1979. Базы данных, протоколы и приложения обычно задействуют временную метку.
Для ее получения в «Питоне» пригодится модуль time, следовательно, первая строка будет import time :
Функция time.time() возвращает пользователю число с плавающей запятой и с временной меткой Unix.
На этом все. Очень надеемся, что вы получили некоторое представление об использовании встроенных Python-библиотек и модулей, необходимых для отображения временных значений.
DateTime, TimeDelta, Strftime(Format): дата и время в Python с примерами
Дата публикации: 2019-06-27
От автора: классы date, time и datetime предоставляют ряд функций для работы в Python с датами, временем и временными интервалами. Date и datetime являются объектами Python, поэтому, когда вы манипулируете ими, вы фактически манипулируете объектами, а не строками или временными метками. Всякий раз, когда вы манипулируете датами или временем, вам нужно импортировать функцию datetime.
Классы datetime в Python подразделяются на 5 основных классов.
date — работа с простой датой (месяц, день, год)
time — время, независимое от дня (час, минута, секунда, микросекунда)
datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
timedelta — продолжительность времени, используемого для манипулирования датами
tzinfo— абстрактный класс для работы с часовыми поясами
В этом руководстве мы рассмотрим:
Как использовать классы Date и DateTime
Вывод даты с использованием date.today()
Текущая дата и время в Python: now() today()
Как отформатировать дату и время с помощью Strftime()
Как использовать Объекты Timedelta
Как использовать классы Date и DateTime
Шаг 1) Прежде чем запускать код для datetime, важно импортировать модули date time, как показано на скриншоте ниже.
Эти операторы импорта являются предопределенными частями функционала в библиотеке Python, которые позволяют вам манипулировать датами и временем без написания какого-либо кода. Рассмотрим следующее перед выполнением кода даты и времени:
Эта строка сообщает интерпретатору Python, что из модуля datetime импортируется класс date. Мы не пишем код для этого функционала, а просто импортируем его для использования.
Шаг 2) Далее мы создаем экземпляр объекта даты.
Шаг 3) Далее мы выводим дату и запускаем код.
Вывод соответствует ожидаемому.
Вывод даты с использованием date.today()
Функция date.today имеет несколько свойств, связанных с ней. Мы можем вывести отдельно день / месяц / год и многое другое. Давайте рассмотрим пример:
Сегодняшний номер дня недели
Функция date.today() также дает номер дня недели. Вот таблица рабочих дней, которая начинается с понедельника 0 и заканчивается воскресеньем 6.
Номер дня недели полезен для массивов, индекс которых зависит от дня недели.
Текущая дата и время в Python: now() today()
Когда мы выполняем код для datetime, он выдает выходные данные с текущей датой и временем.
Шаг 2) С помощью «объекта DATETIME» вы также можете вызвать класс time.
Предположим, мы хотим вывести только текущее время без даты.
Мы импортировали класс time. Мы присваиваем ему текущее значение времени, используя datetime.now(). Мы присваиваем значение текущего времени переменной t. И это даст нам только время. Итак, давайте запустим эту программу.
Вы можете видеть, что здесь у меня есть дата и время. А в следующей строке есть только время.
Шаг 3) Мы применим индексатор дня недели к массиву дней недели, чтобы узнать, какой сегодня день.
Оператору дней (wd) присваивается номер (0-6) в зависимости от текущего дня недели. Здесь мы объявили массив списка для дней (Mon, Tue, Wed…Sun). Используйте это значение индекса, чтобы узнать, какой сегодня день. В нашем случае это номер 2, и он представляет среду, поэтому на выходе мы получим «Which is a Wednesday».
Вот полный код для получения текущей даты и времени, используя datetime.
Как отформатировать дату и время с помощью Strftime()
На данный момент мы узнали, как использовать в Python объекты datetime и date. Теперь мы узнаем, как использовать функцию форматирования времени и даты.
Шаг 1) Сначала мы рассмотрим, как отформатировать год. Вот пример:
Мы использовали для форматирования «функцию strftime».
Эта функция использует другой управляющий код для вывода.
В нашем случае это («%Y»), который указывает год, он выводим полный год с веком (например, 2018).
Шаг 2) Теперь, если вы замените («%Y») на строчные буквы, т. е. («%y») и выполните код, выходные данные будут отображать только (18), а не (2018). Век года не будет отображаться как показано на скриншоте ниже.
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Шаг 3) Функция Strf может объявлять отдельно дату, день, месяц и год. Также с небольшими изменениями в управляющем коде функции strftime вы можете отформатировать стиль текста.
Внутри функции strftime, если вы замените (%a) на заглавную A, т. е. (%A), вывод будет «Friday», а не просто «Fri».
Шаг 4) С помощью функции «Strftime» мы также можем получить локальное системное время, дату или и то, и другое.
%C — указывает местную дату и время
%x — указывает местную дату
%X — указывает местное время
В результате вы можете увидеть вывод, как и ожидалось.
Шаг 5) Функция strftime позволяет вам вызывать время в формате 24 часа или 12 часов.
Просто определив управляющий код, %I/H для часов, %M для минут, %S для секунд, можно вызвать время в разных форматах.
Время 12 часов объявляется, как [print now.strftime(«%I:%M:%S %P)].
24 часа объявляется, как [print now.strftime(«%H:%M»)].
Вот полный код для преобразования datetime в объект String.
Как использовать Объекты Timedelta
С объектами timedelta вы можете оценить время как для будущего, так и для прошлого. Другими словами, это временной интервал для прогнозирования любого конкретного дня, даты или времени.
Помните, что эта функция предназначена не для вывода времени или даты, а для того, чтобы ВЫПОЛНЯТЬ РАСЧЕТЫ в будущем или прошлом. Давайте рассмотрим пример.
Шаг 1) Чтобы запустить Объект Timedelta, вам нужно сначала объявить оператор импорта, а затем выполнить код:
Указываем оператор импорта для timedelta
Теперь указываем код для вывода объекта из timedelta, как показано на снимке экрана
Запустите код. Timedelta представляет промежуток 365 дней, 8 часов и 15 минут и выводит то же самое
Смешение? Об этом в следующем шаге.
Шаг 2) Давайте получим текущие дату и время, чтобы проверить, как работает наш оператор импорта. Когда код выполняется, он выводим сегодняшнюю дату, что означает, что наш оператор импорта работает хорошо.
Шаг 3) Посмотрим, как мы можем получить дату через год с помощью Объекта Timedelta. Когда мы запускаем код, он выдает результат, как и ожидалось.
Шаг 4) Еще один пример того, как Timedelta может использоваться для расчета будущей даты из текущей даты и времени.
Шаг 5) Давайте рассмотрим более сложный пример. Я хотел бы определить, сколько дней прошло в новом году. Вот как мы будем действовать.