- Datetime Python
- Введение
- Применение
- Отличие datetime от time
- Классы библиотеки
- datetime
- Операции
- tzinfo и timezone
- Как управлять датой и временем в Python?
- Как получить текущую дату и время в Python?
- Как получить текущую дату?
- Что внутри datetime?
- Класс datetime.date
- Объект Date для представления даты
- Пример: Получить текущую дату
- Пример: Получить дату из отметки времени
- Пример: Вывести сегодняшний год, месяц и день
- datetime.time
- Объект времени для представления времени
- Вывод часа, минуты, секунды и микросекунды
- datetime.datetime
- Объект datetime
- Напечатать год, месяц, час, минуту и отметку времени
- datetime.timedelta
- Разница между двумя датами и временем
- Разница между двумя объектами timedelta
- Печать отрицательного объекта timedelta
- Продолжительность времени в секундах
- Дата и время в формате Python
- Метод strftime() ‒ объект datetime для строки
- Форматирование даты с помощью strftime()
- Python strptime() ‒ строка для даты и времени
- strptime()
- Обработка часового пояса
- Как получить текущую дату и время в Python
- Получение текущей даты и времени с datetime
- Получение текущей даты
- Получение текущего времени
- Получение текущей даты и времени в другом часовом поясе
- Преобразование меток времени в даты и время
- Вывод
Datetime Python
Введение
Работа программиста со временем и датой зачастую связана со многими сложностями. Дело в том, что существует множество форматов представления таких данных. Они зависят от локализации (местоположения), предпочтения тех, кто генерирует эти данные и много-много ещё от чего. В итоге, выполняя простейшие для повседневной жизни операции, программист может столкнуться с целым набором сложностей. К счастью, в языке Python есть встроенный модуль под названием datetime. Этот модуль призван максимально упростить данный класс задач. Давайте знакомиться!
Применение
Модуль datetime применяется в Пайтоне для операций с датами и временем и стремится сделать это оптимальным способом.
Этот модуль включает в себя различные классы, методы которых позволяют:
Узнать сколько сейчас времени и какая дата.
Выполнить манипуляции с датами, такие, например, как вычисление промежутка времени.
Выполнить манипуляции со временем, такие, например, как сравнение двух моментов времени.
Менять формат представления времени и даты.
Номер года, который допускает модуль, лежат внутри интервала от 1 до 9999
Для начала использования данного модуля Вам необходимо импортировать его в Ваш код:
Отличие datetime от time
В стандартной библиотеке Питона есть ещё один модуль: time. Он тоже предназначен для работы со временем. В чём их отличие? Разница в том, что модуль time главным образом предназначен для работы с метками времени Unix (выражается в виде числа с плавающей запятой, считающегося секундами с эпохи Unix). datetime модуль может поддерживать многие из тех же операций, но обеспечивает более объектно-ориентированный набор типов, а также имеет некоторую ограниченную поддержку часовых поясов.
Классы библиотеки
Как мы уже упоминали, библиотека datetime состоит из нескольких классов, которые перечислены в следующей таблице:
Метод Описание
date позволяет манипулировать датами независимо от времени (месяц, день, год)
time позволяет управлять временем независимо от даты (час, минута, секунда, микросекунда)
datetime позволяет нам управлять временем и датами вместе (месяц, день, год, час, секунда, микросекунда)
timedelta продолжительность времени, используемого для управления датами и измерения
tzinfo абстрактный класс для работы с часовыми поясами
timezone абстрактный базовый класс как фиксированное смещение от UTC
datetime
В datetime модуле есть класс с именем datetime, который может содержать информацию как из объектов даты, так и из объектов времени.
Код | Описание | Пример |
---|---|---|
%a | Сокращенное название дня недели. | Fri |
%A | Полное название дня недели. | Friday |
%w | День недели в виде десятичного числа. | 0, 1, …, 6 |
%d | День месяца. | 23 |
%b | Сокращенное название месяца. | Jul |
%B | Полное название месяца. | July |
%m | Месяц как десятичное число с нулями. | 01, 02, …, 12 |
%y | Год без века как десятичное число с нулями. | 21 |
%Y | Год с веком в виде десятичного числа. | 2021 |
%H | Час (в 24-часовом формате) как десятичное число с нулями. | 00, 01, …, 23 |
%I | Час (12-часовой формат) в виде десятичного числа с нулями. | 01, 02, …, 12 |
%p | Локаль AM или PM. | AM |
%M | Минута в виде десятичного числа с нулями. | 00, 01, …, 59 |
%S | Секунды как десятичное число с нулями. | 00, 01, …, 59 |
%f | Микросекунды в виде десятичного числа с нулями слева. | 000000–999999 |
%z | Смещение UTC. | +0000, -0400, +1030 |
%Z | Название часового пояса. | UTC, GMT |
%j | День года в виде десятичного числа с нулями. | 001, 002, …, 366 |
%U | Номер недели в году (воскресенье как первый день недели). Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. | 00, 01, …, 53 |
%W | Номер недели в году (понедельник как первый день недели). Все дни нового года, предшествующие первому понедельнику, считаются нулевой неделей. | 00, 01, …, 53 |
%c | Соответствующее представление даты и времени местного стандарта. | Fri Jul 23 08:37:50 2021 |
%x | Соответствующее представление даты местного стандарта. | 07/23/21 |
%X | Соответствующее представление времени местного стандарта. | 08:42:41 |
%% | Буквальный символ «%». | % |
Как и в случае с time и date, в классе datetime можно обратиться к конкретной составляющей объекта:
Операции
Пользуясь классом datetime, можно легко находить разницу между двумя разными датами. Следующим пример демонстрирует создание двух объектов:
tzinfo и timezone
Классы tzinfo и timezone применяются для работы с информацией, которая содержит сведения о часовых поясах. Создать объект, принадлежащий типу tzinfo невозможно, поскольку этот класс является абстрактным. Однако можно воспользоваться наследованием, создав собственный класс на основе tzinfo. При этом следует помнить, что для работы с такими объектами придется реализовать несколько абстрактных методов, к числу которых относятся utcoffset (смещение по местному времени с UTC), dst (настройка перехода на летнее время), а также функция tzname (имя часового пояса в виде строки).
Источник
Как управлять датой и временем в Python?
В этой статье вы научитесь управлять датой и временем в Python с помощью примеров.
В Python есть модуль datetime для работы с датой и временем. Прежде чем копать глубже, давайте создадим несколько простых программ, связанных с датой и временем.
Как получить текущую дату и время в Python?
Простая программа с помощью которой можно получить текущую дату и время в Python:
Когда вы запустите программу, результат будет примерно таким:
Здесь мы импортировали модуль datetime, используя оператор import datetime.
Один из классов, определенных в модуле datetime, ‒ это класс datetime. Затем мы использовали метод now() для создания объекта datetime, содержащего текущие локальные дату и время.
Как получить текущую дату?
Когда вы запустите программу, результат будет примерно таким:
В этой программе мы использовали метод today(), определенный в классе даты, чтобы получить объект даты, содержащий текущую локальную дату.
Что внутри datetime?
Мы можем использовать функцию dir(), чтобы получить список, содержащий все атрибуты модуля.
Когда вы запустите программу, вывод будет:
Обычно используемые классы в модуле datetime:
- дата класса;
- класс времени;
- datetime класс;
- класс timedelta.
Класс datetime.date
Вы можете создавать экземпляры объектов даты из класса даты. Объект представляет собой дату (год, месяц и день).
Объект Date для представления даты
Когда вы запустите программу, вывод будет:
В приведенном выше примере date() является конструктором класса даты. Конструктор принимает три аргумента: год, месяц и день.
Переменная a ‒ объект даты.
Мы можем импортировать только класс даты из модуля datetime. Вот как:
Пример: Получить текущую дату
Вы можете создать объект даты, содержащий текущую дату, используя метод класса с именем today(). Вот как:
Пример: Получить дату из отметки времени
Мы также можем создавать объекты даты из отметки времени. Отметка времени Unix ‒ это количество секунд между определенной датой и 1 января 1970 года по всемирному координированному времени. Вы можете преобразовать метку времени в дату, используя метод fromtimestamp().
Когда вы запустите программу, вывод будет:
Пример: Вывести сегодняшний год, месяц и день
Мы можем легко получить год, месяц, день, день недели и т.д. из объекта даты. Вот как:
datetime.time
Объект времени, созданный из класса времени, представляет местное время.
Объект времени для представления времени
Когда вы запустите программу, вывод будет:
Вывод часа, минуты, секунды и микросекунды
После создания объекта времени вы можете легко распечатать его атрибуты, такие как час , минута и т.д.
Когда вы запустите пример, результат будет:
Обратите внимание, что мы не передали аргумент микросекунды. Следовательно, печатается его значение по умолчанию 0.
datetime.datetime
В модуле datetime есть класс с именем dateclass, который может содержать информацию как из объектов даты, так и времени.
Объект datetime
Когда вы запустите программу, вывод будет:
Первые три аргумента год, месяц и день в конструкторе datetime() являются обязательными.
Напечатать год, месяц, час, минуту и отметку времени
Когда вы запустите программу, вывод будет:
datetime.timedelta
Объект timedelta представляет разницу между двумя датами или временем.
Разница между двумя датами и временем
Когда вы запустите программу, вывод будет:
Обратите внимание, что и t3, и t6 относятся к типу .
Разница между двумя объектами timedelta
Когда вы запустите программу, вывод будет:
Здесь мы создали два объекта timedelta t1 и t2 , и их разница отображается на экране.
Печать отрицательного объекта timedelta
Когда вы запустите программу, вывод будет:
Продолжительность времени в секундах
Вы можете получить общее количество секунд в объекте timedelta, используя метод total_seconds().
Когда вы запустите программу, вывод будет:
Вы также можете найти сумму двух дат и времени, используя оператор +. Кроме того, вы можете умножать и делить объект timedelta на целые числа и числа с плавающей запятой.
Дата и время в формате Python
Дата и время могут быть разными в разных местах, организациях и т.д. в США чаще используется мм/дд/гггг, а в Великобритании ‒ дд/мм/гггг.
Для этого в Python есть методы strftime() и strptime().
Метод strftime() ‒ объект datetime для строки
Метод определяется в классах date, datetime и time. Метод создает форматированную строку из заданного объекта даты, даты, времени или времени.
Форматирование даты с помощью strftime()
Когда вы запустите программу, результат будет примерно таким:
Здесь % Y,% m,% d,% H и т.д. являются кодами формата. Метод strftime() принимает один или несколько кодов формата и возвращает на его основе отформатированную строку.
В приведенной выше программе t s1 и s2 -‒ это строки:
- % Y — год [0001, …, 2018, 2019, …, 9999]
- % m — месяц [01, 02, …, 11, 12]
- % d — день [01, 02, …, 30, 31]
- % H — час [00, 01, …, 22, 23
- % M — минута [00, 01, …, 58, 59]
- % S — секунда [00, 01, …, 58, 59]
Python strptime() ‒ строка для даты и времени
Метод создает объект datetime из заданной строки (представляющей дату и время).
strptime()
Когда вы запустите программу, вывод будет:
Метод принимает два аргумента:
- Строка, представляющая дату и время.
- Код формата, эквивалентный первому аргументу.
Кстати, коды формата% d,% B и% Y используются для дня, месяца (полное имя) и года соответственно.
Обработка часового пояса
Предположим, вы работаете над проектом и вам нужно отображать дату и время в соответствии с их часовым поясом. Вместо того, чтобы пытаться самостоятельно обрабатывать часовой пояс, мы предлагаем вам использовать сторонний модуль pytZ.
Когда вы запустите программу, результат будет примерно таким:
Здесь datetime_NY и datetime_London ‒ это объекты, содержащие текущую дату и время соответствующего часового пояса.
Источник
Как получить текущую дату и время в Python
Регистрация, сохранение записей в базе данных и доступ к файлам — все это общие задачи, над которыми работает программист. В каждом из этих случаев дата и время играют важную роль в сохранении значения и целостности данных. Программистам часто приходится взаимодействовать с датой и временем.
В этой статье мы узнаем, как получить текущую дату и время, используя встроенный в Python модуль datetime. С помощью этого модуля мы можем получить все соответствующие данные в одном объекте или извлечь дату и время отдельно.
Мы также узнаем, как настроить дату и время для разных часовых поясов. Наконец, мы рассмотрим преобразование объектов datetime в популярные метки времени Unix или Epoch.
Получение текущей даты и времени с datetime
Модуль datetime содержит различные классы, чтобы получить информацию о дате и времени:
- datetime.date : Хранит день, месяц и год
- datetime.time : Хранит время в часах, минутах, секундах и микросекундах. Эта информация не зависит от даты
- datetime.datetime : Хранит атрибуты date и time
Получим текущую дату и время с объектом datetime.datetime , так как из него легче извлечь объекты date и time . Для начала давайте импортируем модуль datetime :
Поначалу это выглядит странно, но мы получаем класс datetime из модуля datetime , это две разные вещи.
Мы можем использовать функцию now() , чтобы получить объект с текущей датой и временем:
Запуск этого файла даст нам следующий вывод:
Функция now() дала нам объект со всей датой и временем его создания. Когда мы его печатаем, Python автоматически форматирует объект в строку, чтобы люди могли его легко прочитать.
Вы можете получить отдельные атрибуты даты и времени следующим образом:
Метод now() идеально подходит для захвата текущего времени и даты. Однако, это излишне, когда вы заботитесь только о дате или времени, но не обоих. Как мы можем получить только информацию о дате?
Получение текущей даты
Есть два способа получить текущую дату в Python. В консоли Python мы можем получить дату из объекта datetime с помощью метода date() :
Тем не менее, это кажется пустой тратой на инициализацию объекта datetime только для захвата даты. Альтернативой может быть использование метода today() класса date :
Класс datetime.date представляет собой календарную дату. Его атрибуты year , month и day могут быть доступны так же, как мы обращаемся к ним в объекте datetime .
Например, этот оператор print получает каждый атрибут, а также использует метод weekday() для получения дня недели:
Примечание: Метод weekday() возвращает целое число от 0 до 6 для представления дня недели. 0 соответствует понедельнику. Поэтому в нашем примере мы добавили 1, чтобы напечатать 5-й день недели (пятница), хотя метод weekday() вернул 4.
Теперь, когда мы можем получить текущую дату самостоятельно, давайте посмотрим, как мы можем получить текущее время
Получение текущего времени
Мы фиксируем текущее время от объекта datetime , используя метод time() :
В отличие от получения дат, здесь нет ярлыка для непосредственного отображения текущего времени. Класс datetime.time представляет собой понятие времени как в часах, минутах, секундах и микросекунд — все, что меньше, чем один день.
Как и объект datetime , мы можем получить доступ к его атрибутам напрямую. Вот пример, как мы печатаем current_time в предложении:
По умолчанию функция now() возвращает время вашего местного часового пояса. Что если нам нужно будет преобразовать его в другой, который был установлен в настройках пользователя? Давайте посмотрим, как мы можем предоставить информацию о часовом поясе для получения локализованных объектов time .
Получение текущей даты и времени в другом часовом поясе
Метод now() принимает временную зону в качестве аргумента, так что объект datetime генерируется соответствующим образом. Во-первых, нам нужно получить данные о часовом поясе через библиотеку pytz.
Установите библиотеку pytz :
Теперь давайте используя pytz получим текущую дату и время, если бы мы были в Берлине:
berlin_current_datetime будет объектом datetime со всеми свойствами и функциями, которые мы видели ранее, но теперь он полностью соответствует часовому поясу Берлина.
Если вы хотите узнать время в UTC, вы можете использовать модуль pytz , как и раньше:
Кроме того, для времени UTC вам не нужно использовать модуль pytz вообще. Модуль datetime имеет свойство timezone , которое может быть использовано, как в примере:
Теперь, когда мы можем преобразовать наши даты и время в разные часовые пояса, давайте посмотрим, как мы можем преобразовать его в один из наиболее широко используемых форматов в вычислениях — временные метки Unix.
Преобразование меток времени в даты и время
Компьютерные системы измеряют время на основе количества секунд, прошедших с начала эпохи Unix, то есть 00:00:00 UTC 1 января 1970 года. Приложения, базы данных и протоколы обычно используют временную метку для отображения времени.
Вы можете получить текущую метку времени в Python, используя модуль time :
Функция time.time() возвращает число с плавающей запятой с меткой времени Unix. Вы можете преобразовать метку времени в объект datetime , используя функцию fromtimestamp() :
fromtimestamp() по умолчанию возвращает объект datetime в вашем часовом поясе. Вы можете указать часовой пояс в качестве второго аргумента, если хотите, чтобы он был локализован по-другому.
Например, чтобы преобразовать метку времени в объект datetime в формате UTC, вы можете сделать это:
И наоборот, вы можете использовать метод timestamp() для преобразования объекта datetime в допустимую метку времени:
Вывод
Встроенная Python библиотека datetime позволяет нам получать текущую дату и время с помощью функции now() . Мы можем использовать возвращенный объект datetime , чтобы извлечь только часть даты или часть времени. Мы также можем получить текущую дату с помощью функции today() .
По умолчанию Python создает объекты datetime в нашем местном часовом поясе. Если мы используем библиотеку pytz , мы можем конвертировать даты и время в разные часовые пояса.
Наконец, мы использовали функцию fromtimestamp() для получения метки времени Unix для получения объекта datetime . Если у нас есть объект datetime , мы можем получить метку времени, используя его метод timestamp() .
Источник