Даты в Python datetime()

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

Применение

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

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

  1. Получение текущей даты и времени.
  2. Осуществление арифметических операций с датой и временем. Например, определение, сколько часов прошло с такого-то момента. 
  3. Операции, дающие возможность сравнивать время между собой, определять, где оно больше, а где меньше.
  4. Задавать способ отображения данных о дате и времени.

Есть в этом модуле две константы. Они задают минимальный и максимальный год, который может использоваться в программе. Значения этих констант простые – 1 и 9999.

Таким образом, Python дает возможность задавать дату и время в довольно больших пределах.

Datetime и time: отличие модулей

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

Модуль time используется для того, чтобы отображать и совершать операции исключительно с временем. В его основе лежит количество секунд, которые прошли с определенного момента. Эта точка во времени называется началом эпохи. С помощью этого модуля мы можем форматировать вывод этого значения. 

Кроме всего прочего, библиотека имеет метод sleep, с помощью которого возможно устанавливать паузы в исполнении кода приложения. Он применяется для определения времени работы приложения с использованием monotonic.

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

Как импортировать модуль с датой?

За вывод дат в Python отвечает модуль datetime. Чтобы его импортировать, используется соответствующее ключевое слово. 

import datetime




x = datetime.datetime.now()

print(x)

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

Отображается эта строка в таком формате.

2018-12-23 16:04:39.093712

Осуществление вывода даты

Компоненты объекта «Дата» следующие:

  1. Год. 
  2. Месяц.
  3. День.
  4. Час.
  5. Минута.
  6. Секунда.
  7. Микросекунда.

Вообще, можно гибко настраивать информацию об объекте даты. Немного позже вы узнаете, как это делать.

Мы же для демонстрации сейчас покажем, как осуществляется вывод года и дня недели. 

import datetime    

x = datetime.datetime.now()

print(x.year)

print(x.strftime("%A"))

Здесь будет сначала выведен год, а потом день недели, через символ новой строки. 

Генерация объекта даты

Модуль datetime() содержит конструктор с таким же названием, которому нужно передавать три параметра – год, месяц, день.  

import datetime    

x = datetime.datetime(2020, 5, 17)    

print(x)

Выводиться информация будет в таком формате.

2020-05-17 00:00:00

Также можно передавать часовой пояс. Правда, это делать необязательно. Если не задавать иного, стандартное значение для часового пояса составляет 0. 

Метод strftime()

С помощью объекта datetime можно задавать форматирование объекта даты в читаемые строки. То есть, выражать ее не числами, а буквами. Например, передавать слово «June» вместо 06.

Чтобы это сделать, необходимо вызвать метод strftime(), позволяющий задать формат возвращаемой строки. 

Например, название месяца отображается следующим образом. 

import datetime

x = datetime.datetime(2018, 6, 1)

print(x.strftime("%B"))

То есть, не надо передавать вручную слово, которое соответствует месяцу. Модуль содержит эти названия, и достаточно просто воспользоваться методом strftime, чтобы это сделать. 

Приведем таблицу, которая задает способы форматирования даты.

Символ Описание Пример
%a День недели, короткий вариант Wed
%A Будний день, полный вариант Wednesday
%w День недели числом 0-6, 0 — воскресенье 3
%d День месяца 01-31 31
%b Название месяца, короткий вариант Dec
%B Название месяца, полное название December
%m Месяц числом 01-12 12
%y Год, короткий вариант, без века 18
%Y Год, полный вариант 2018
%H Час 00-23 17
%I Час 00-12 05
%p AM/PM PM
%M Минута 00-59 41
%S Секунда 00-59 08
%f Микросекунда 000000-999999 548513
%z Разница UTC +0100
%Z Часовой пояс CST
%j День в году 001-366 365
%U Неделя числом в году, Воскресенье первый день недели, 00-53 52
%W Неделя числом в году, Понедельник первый день недели, 00-53 52
%c Локальная версия даты и времени Mon Dec 31 17:41:00 2018
%x Локальная версия даты 12/31/18
%X Локальная версия времени 17:41:00
%% Символ “%” %

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

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

date Это дата, которая основывается на Григорианском календаре. Здесь информация о времени не указывается, только дата.
time Здесь указывается исключительно время, а не дата.
datetime Содержит как данные о времени, так и сведения о дате на основе Григорианского календаря.
timedelta Описывает дельту времени. То есть, период между точкой А во времени и точкой Б.
tzinfo Дает информацию о том, в каком часовом поясе представлена информация
timezone Указывает время, исходя из стандарта UTC.

Далее мы рассмотрим, как некоторые эти классы в Python могут использоваться для того, чтобы работать со временем и датой. 

Класс date

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

То есть, все точно так же, как с объектом класса datetime. Только данные будут выводиться без указания времени. 

Давайте теперь приведем пример, как можно использовать объект date для вывода сведений о дате на экран.  

import datetime

a = datetime.date(2001, 10, 28)

print(a)

print(type(a))




2001-10-28

<class 'datetime.date'>

Класс time

Он используется, чтобы получать сведения о времени. Дата здесь в учет не берется. Точно так же, как и в предыдущем случае, необходимо сначала импортировать модуль datetime, используя ключевое слово import

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

Помимо этого, надо помнить об ограничениях. Например, запрещено отображать на месте секунд значение больше, чем 59

То есть, автоматической конвертации в этом случае не получается. 

Давайте теперь приведем фрагмент кода, в котором создается переменная с объектом класса time, а также четырьмя различными свойствами. 

import datetime

a = datetime.time(12, 18, 35, 5867)

print(a)

print(type(a))




12:18:35.005867

<class 'datetime.time'>

Класс timedelta()

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

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

from datetime import timedelta

a = timedelta(days=5, hours=21, minutes=2, seconds=37)

print(a)

print(type(a))




5 days, 21:02:37

<class 'datetime.timedelta'>

Видим, что вывод содержит строку «5 days», что означает: с одной даты к другой прошло 5 дней.

Операции 

Благодаря классу datetime, пользователь может запросто находить разницу между двумя датами. Давайте приведем пример, который это наглядно демонстрирует. 

from datetime import datetime

a = datetime.now()

b = datetime(2015, 3, 21)

c = a - b

print(c.days)

print(c.seconds)

print(c.microseconds)




1328

43219

65190

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

А с помощью функции print() мы непосредственно выводим на экран свойства этого объекта. Чтобы получить доступ к каждому из них, используется оператор точки.

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

Рассмотрим некоторые.

-a Возвращает противоположное значение
+a Возвращает объект timedata, имеющий такое же самое значение. 
a>b, a<b Сравнивают между собой два объекта, и возвращают соответствующее значение в зависимости от того, какой из них  является большим, а какой – меньшим.
str(a) Задает строковое значение даты и времени
repr(a) Задает строковое отрицательное значение объекта

 

ОфисГуру
Adblock
detector