python datetime следующий день

Модуль datetime

Модуль datetime из стандартной библиотеки языка программирования Python представляет собой сборник из самых разных классов для комфортной работы со временем и датами. За счет множества встроенных методов, предназначенных для удобного отображения, а также манипуляции над временем и датами, повышается функциональность некоторых программ.

Применение

Библиотека datetime используется для работы в Python со временем и датами, позволяя представлять данную информацию в наиболее удобной форме.

Она состоит из нескольких классов. Благодаря их наличию, программист получает доступ к многим полезным методам:

В модуле используются константы MINYEAR и MAXYEAR, которые равны 1 и 9999 соответственно. Это минимальное и максимально возможное значение года, используемые в библиотеке.

Отличие datetime от time

Но в Python помимо библиотеки datetime есть еще библиотека time. Давайте разберемся, какую из них нам следует использовать:

Модуль time обычно используется при работе с текущем временем, основывающемся на значении в секундах, прошедших с начала эпохи. Позволяет делать его форматированный вывод. Есть возможности установки пауз в выполнении скрипта с помощью метода sleep. Используется для вычисления времени работы программы с помощью monotonic.

В отличие от модуля time, в datetime есть несколько встроенных классов, позволяющих производить различные манипуляции с датой и временем, такие как арифметические операции или сравнение.

Классы библиотеки

Модуль datetime включает в себя несколько разных классов, каждый из которых обладает собственными методами и свойствами, а также служит для определенных целей. Все они представлены в следующей таблице, где содержатся их названия и краткая характеристика.

НазваниеХарактеристика
dateпредставляет собой дату, полностью исключая данные о времени, на основе Григорианского календаря
timeвключает данные о времени, полностью игнорируя сведения о дате
datetimeсодержит информацию о времени и дате, основываясь на данных из Григорианского календаря
timedeltaописывает определенный период во времени, который находится между двумя различными моментами
tzinfoпредставляет различные сведения о часовом поясе
timezoneописывает время, руководствуясь стандартом UTC

Далее будет рассмотрено как с помощью этих классов можно в Python работать с датой и временем. Разберем основные примеры использования библиотеки datetime.

Класс date используется для представления данных о дате, которые включают год, месяц и число. Чтобы иметь возможность применять этот класс, необходимо предварительно импортировать модуль datetime, поместив соответствующую инструкцию в начало файла с программным кодом. Для создания объектов типа date следует произвести вызов одноименного конструктора, указав ему в качестве параметров сведения о дате. При этом нельзя забывать о порядке, в котором находятся аргументы: год, затем месяц и число.

Следующий пример демонстрирует создание объекта date, где переменная под названием a получает три обозначенных выше значения. После этого сведения о дате выводятся на экран при помощи метода print, а функция type позволяет получить имя класса для этого объекта.

Если необходимо в Python получить информацию о текущей дате, совсем необязательно вызывать стандартный конструктор date и вручную вбивать подходящие значения. С этой задачей как нельзя лучше справляется встроенный метод today. В следующем фрагменте кода показано как можно быстро присвоить сегодняшнюю дату объекту, а затем вывести эту информацию.

Иногда приходится работать не только с общими сведениями о дате, но и с отдельными ее составляющими, годом, месяцем или днем. Получить доступ к данным свойствам объекта можно с помощью оператора точки. Однако следует помнить, что изменить их у текущего объекта нельзя. В следующем примере показывается как переменная a инициализируется с помощью конструктора, после чего на экране отображаются все ее свойства по-отдельности.

Класс time служит для демонстрации данных о времени, полностью игнорируя дату. Как и в случае с предыдущим классом date, следует импортировать модуль datetime с помощью ключевого слова import. Создать объект, принадлежащий к типу time можно с помощью конструктора, который принимает такие аргументы как количество часов, минут, секунд и микросекунд. Указывая данные параметры, не стоит забывать об их необходимом порядке, расставляя числа на правильных позициях. Также нужно помнить, что существуют ограничения, к примеру, нельзя отображать время со значением более 59 на месте секунд.

В следующем фрагменте кода создается переменная a, которой присваивается объект типа time с четырьмя разными свойствами: число часов, минут, секунд и микросекунд. Благодаря методу print выводится информация об этом объекте, а функция type отображает его класс.

Чтобы создать объект типа time необязательно указывать все его свойства в конструкторе. Как видно из результатов выполнения описанной ниже программы, недостающие данные о времени автоматически заполняются нулями, в то время как введенные числа добавляются в объект от большего к меньшему. Таком образом, инициализируются три разных переменных a, b и c, после чего методы print выводят информацию об их текущем состоянии на дисплей.

Также, как и в классе date, пользуясь time, можно получать доступ к отдельным значениям созданного ранее объекта: часам, минутам, секундам и микросекундам. Для этого нужно применить оператор точка, после чего указать конкретное свойство. В следующем примере демонстрируется вывод информации, представляющей отдельные сведения об объекте a.

datetime

Класс datetime позволяет описывать данные об определенном моменте во времени, который учитывает не только часы и минуты, но и сведения о дате. Как и в случае с предыдущими типами объектов, здесь используется конструктор с несколькими аргументами под каждое значение. В следующем примере демонстрируется программа, где переменная под именем a получает объект из стандартного конструктора datetime, после выводит свое значение и тип.

Создавать объекты можно с разным набором параметров, указывая только нужные сведения. Отсутствующие данные по умолчанию будут заполнены нулями. Приведенный ниже код показывает, как создаются два объекта a и b, первый из которых изначально содержит только дату, а второй обладает информацией о дате и о времени.

Получить текущий момент времени можно при помощи двух разных методов, один из которых уже использовался ранее в date. Следующий код демонстрирует вызов функций today и now, возвращающих в Python текущую дату и время с точностью до микросекунд. Метод print как обычно позволяет отобразить эти сведения на дисплее.

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

Чтобы в Python преобразовать дату и время в строку нужного формата, следует воспользоваться методом strftime, указав ему в качестве аргумента параметры форматирования. Как можно понять из примера, который находится ниже, за воспроизведение информации о количестве дней или минут отвечают специальные зарезервированные символы, идущие следом за знаком процента.

Стоит заметить, что здесь создаются два совершенно идентичных объекта при помощи метода today. Однако, благодаря работе функции strftime, каждый из них получает свою форму для вывода на экран (день, месяц и год для переменной a, час, минута, секунда для переменной b). После этого метод print отображает сведения в заданном ранее формате.

Доступные типы форматов для вывода через консоль располагаются в следующей таблице. Здесь можно найти их обозначения, а также краткое описание того, что именно они делают.

ФорматЗначение
%aназвание дня недели в сокращенном виде
%Aназвание дня недели в полном виде
%wномер дня недели в виде целого числа
%dномер дня месяца в виде целого числа
%bназвание месяца в сокращенном виде
%Bназвание месяца в полном виде
%mномер месяца в числовом представлении
%yномер года без столетия
%Yномер года в полном представлении
%Hколичество часов в 24-часовом формате
%Iколичество часов в 12-часовом формате
%pдо полудня или после полудня в 12-часовом формате
%Mколичество минут в виде целого числа
%Sколичество секунд в виде целого числа
%fколичество микросекунд в виде целого числа
%zчасовой пояс в формате UTC
%Zназвание часового пояса
%jномер дня в году
%Uномер недели в году, если считать с воскресенья
%wномер недели в году, если считать с понедельника
%cместное представление даты и времени
%xместное представление даты
%Xместное представление времени
%%символ процента

Как и в случае с time и date, в классе datetime пользователь в состоянии получать доступ к отдельным свойствам созданного объекта (годам, месяцам, дням, часам, минутам, секундам и микросекундам. В следующем примере кода демонстрируется вывод данных значений.

Сформировать новый объект типа datetime можно и с помощью двух разных объектов, представляющих время и дату (time и date). Для этого используется функция combine. В следующем примере показывается как переменные a и b получают некоторые значения, после чего передаются методу combine в качестве двух параметров.

Операции

Пользуясь классом datetime, можно легко находить разницу между двумя разными датами. Следующим пример демонстрирует создание двух объектов. Переменная a представляет собой дату, которую передает ей метод now, а b задается при помощи конструктора вручную. Выполнив простую операцию нахождения разницы между объектами a и b, можно получить третий объект c. Применение функции print позволяет напрямую вывести на экран его свойства за счет оператора точки.

Перечень доступных операций, с которыми можно работать, располагается в следующей таблице. Здесь находятся примеры операций и их назначение.

Источник

Как использовать модуль 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 с помощью примеров.

В Python есть модуль datetime для работы с датой и временем. Прежде чем копать глубже, давайте создадим несколько простых программ, связанных с датой и временем.

Как получить текущую дату и время в Python?

Простая программа с помощью которой можно получить текущую дату и время в Python:

Когда вы запустите программу, результат будет примерно таким:

Здесь мы импортировали модуль datetime, используя оператор import datetime.

Один из классов, определенных в модуле datetime, ‒ это класс datetime. Затем мы использовали метод now() для создания объекта datetime, содержащего текущие локальные дату и время.

Как получить текущую дату?

Когда вы запустите программу, результат будет примерно таким:

В этой программе мы использовали метод today(), определенный в классе даты, чтобы получить объект даты, содержащий текущую локальную дату.

Что внутри datetime?

Мы можем использовать функцию dir(), чтобы получить список, содержащий все атрибуты модуля.

Когда вы запустите программу, вывод будет:

Обычно используемые классы в модуле datetime:

Класс datetime.date

Вы можете создавать экземпляры объектов даты из класса даты. Объект представляет собой дату (год, месяц и день).

Объект Date для представления даты

Когда вы запустите программу, вывод будет:

В приведенном выше примере date() является конструктором класса даты. Конструктор принимает три аргумента: год, месяц и день.

Переменная a ‒ объект даты.

Мы можем импортировать только класс даты из модуля datetime. Вот как:

Пример: Получить текущую дату

Вы можете создать объект даты, содержащий текущую дату, используя метод класса с именем today(). Вот как:

Пример: Получить дату из отметки времени

Мы также можем создавать объекты даты из отметки времени. Отметка времени Unix ‒ это количество секунд между определенной датой и 1 января 1970 года по всемирному координированному времени. Вы можете преобразовать метку времени в дату, используя метод fromtimestamp().

Когда вы запустите программу, вывод будет:

Пример: Вывести сегодняшний год, месяц и день

Мы можем легко получить год, месяц, день, день недели и т.д. из объекта даты. Вот как:

datetime.time

Объект времени, созданный из класса времени, представляет местное время.

Объект времени для представления времени

Когда вы запустите программу, вывод будет:

Вывод часа, минуты, секунды и микросекунды

Когда вы запустите пример, результат будет:

Обратите внимание, что мы не передали аргумент микросекунды. Следовательно, печатается его значение по умолчанию 0.

datetime.datetime

В модуле datetime есть класс с именем dateclass, который может содержать информацию как из объектов даты, так и времени.

Объект datetime

Когда вы запустите программу, вывод будет:

Первые три аргумента год, месяц и день в конструкторе datetime() являются обязательными.

Напечатать год, месяц, час, минуту и отметку времени

Когда вы запустите программу, вывод будет:

datetime.timedelta

Объект timedelta представляет разницу между двумя датами или временем.

Разница между двумя датами и временем

Когда вы запустите программу, вывод будет:

Разница между двумя объектами timedelta

Когда вы запустите программу, вывод будет:

Печать отрицательного объекта timedelta

Когда вы запустите программу, вывод будет:

Продолжительность времени в секундах

Вы можете получить общее количество секунд в объекте timedelta, используя метод total_seconds().

Когда вы запустите программу, вывод будет:

Вы также можете найти сумму двух дат и времени, используя оператор +. Кроме того, вы можете умножать и делить объект timedelta на целые числа и числа с плавающей запятой.

Дата и время в формате Python

Дата и время могут быть разными в разных местах, организациях и т.д. в США чаще используется мм/дд/гггг, а в Великобритании ‒ дд/мм/гггг.

Для этого в Python есть методы strftime() и strptime().

Метод strftime() ‒ объект datetime для строки

Метод определяется в классах date, datetime и time. Метод создает форматированную строку из заданного объекта даты, даты, времени или времени.

Форматирование даты с помощью strftime()

Когда вы запустите программу, результат будет примерно таким:

Здесь % Y,% m,% d,% H и т.д. являются кодами формата. Метод strftime() принимает один или несколько кодов формата и возвращает на его основе отформатированную строку.

Python strptime() ‒ строка для даты и времени

Метод создает объект datetime из заданной строки (представляющей дату и время).

strptime()

Когда вы запустите программу, вывод будет:

Метод принимает два аргумента:

Кстати, коды формата% d,% B и% Y используются для дня, месяца (полное имя) и года соответственно.

Обработка часового пояса

Предположим, вы работаете над проектом и вам нужно отображать дату и время в соответствии с их часовым поясом. Вместо того, чтобы пытаться самостоятельно обрабатывать часовой пояс, мы предлагаем вам использовать сторонний модуль pytZ.

Когда вы запустите программу, результат будет примерно таким:

Здесь datetime_NY и datetime_London ‒ это объекты, содержащие текущую дату и время соответствующего часового пояса.

Источник

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, который может содержать информацию как из объектов даты, так и из объектов времени.

Операции

Пользуясь классом datetime, можно легко находить разницу между двумя разными датами. Следующим пример демонстрирует создание двух объектов:

tzinfo и timezone

Классы tzinfo и timezone применяются для работы с информацией, которая содержит сведения о часовых поясах. Создать объект, принадлежащий типу tzinfo невозможно, поскольку этот класс является абстрактным. Однако можно воспользоваться наследованием, создав собственный класс на основе tzinfo. При этом следует помнить, что для работы с такими объектами придется реализовать несколько абстрактных методов, к числу которых относятся utcoffset (смещение по местному времени с UTC), dst (настройка перехода на летнее время), а также функция tzname (имя часового пояса в виде строки).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *