Как вывести дату без времени python

Модуль 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 — работа со временем и датой

Для работы с датой и временем в Python 2 и 3 есть отдельный модуль datetime. В отличие от других языков, таких как SQL, в Python нет встроенного типа данных для работы с датой и временем — это достигается путем импорта модуля и созданием объекта. Модуль datetime входит в пакет Python и его не нужно отдельно устанавливать.

Импорт модуля осуществляется следующим путем:

Навигация по посту

Получение текущей даты и времени

Для вывода даты и времени нужно выполнить следующее:

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

Когда нужно получить только дату используется класс date:

Получение только времени выполняется через метод time():

Каждый из описываемых классов можно импортировать следующим способом:

Форматирование и перевод в строку

Для получение части даты или времени можно использовать следующие атрибуты:

Так же есть метод strftime, который форматирует даты в нужном формате в строку. Например так мы получим дату в формате, который используется у нас:

  • %d — день месяца с 1 по 31;
  • %m — месяц с 1 по 12;
  • %Y — год;
  • %H — час в формате 0-24;
  • %M — минуты;
  • %S — секунды.

Таким же способом можно получить время и дату:

Обратите внимание, что таким способом мы преобразуем объект класса datetime в строку и мы больше не сможем использовать методы по работе с датой (например сравнение):

Мы получим ошибку так как уже работаем со строкой:

  • AttributeError: ‘str’ object has no attribute ‘day’

Выше описаны основные возможности форматирования используя метод strftime(), но их, конечно, больше.

Получения дня недели и название месяца

Можно получить название дня недели или название. Численный вариант эквивалентен следующим значениям:

  • 0 — Monday (Понедельник);
  • 1 — Tuesday (Вторник);
  • 2 — Wednesday (Среда);
  • 3 — Thursday (Четверг);
  • 4 — Friday (Пятница);
  • 5 — Saturday (Суббота);
  • 6 — Sunday (Воскресенье).

Следующий пример вернет день недели в виде числа:

Или получить название:

  • %A — полное название дня недели;
  • %a — сокращенное название дня недели;
  • %s — представление в виде числа.

Такой же принцип по работе с месяцами, где:

  • %B — полное название месяца;
  • %b — сокращенное название месяца;
  • %m — месяц в виде числа.

Создание объекта даты и времени

Для создания даты используется класс с аргументами date(год, месяц, число):

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

Каждый аргумент времени, по умолчанию, имеет значение 0. Мы так же можем использовать подход выше для получения, например, только года или времени:

Если вы не укажете год, месяц или день, то получите ошибку т.к. они по умолчанию равны None:

  • TypeError: Required argument ‘year’ (pos 1) not found

Есть отдельный класс для создания времени time:

Создание из строк

Используя strptime() можно создавать объект datetime из строки:

Продолжительность времени с timedelta

timedelta — это класс с помощью которого можно установить не дату, как в примерах выше, а продолжительность. Так мы создадим объект с 12 днями и 33 секундами:

Все атрибуты, которые мы можем указывать для этого класса:

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

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

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

Изменение объектов

Каждый их объектов выше можно изменить. Так мы изменим объект timedelta прибавив часы к минутам:

С помощью timedelta изменяется и дата. Пример ниже изменяет текущую дату прибавляя к ней 1 день и 1 час:

Сравнение и условия

Каких либо хитростей в сравнении объектов нет. В следующем примере идет сравнение двух дат с разницей в день:

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

Объект timedelta тоже можно сравнивать:

Работа с метками (штампами) timestamp

При работе с API или в Unix системах мы можем увидеть отображение времени в таком формате:

Данные числа обозначают количество секунд с 1 января 1970 года. Мы можем конвертировать данное число в понятный формат используя datetime:

Так же сработает если мы хотим получить и время:

Для конвертирования в timestamp используется метод с аналогичным названием:

Работа с часовыми поясами

К сожалению у меня нет большого опыта работы с часовыми поясами и примеры ниже не стоит рассматривать как лучшие практики.

Библиотека datetime не хранит часовые пояса, данные о переводах часов (летнее и зимнее время) и високосных секундах. К тому же, некоторые страны, могут изменить время опираясь на локальные ситуации. Эти ситуации опасны, когда идет запись в базу данных. Для вывода в GUI, можно использовать datetime.datetime.now() или высчитывать часовой пояс из базы.

Для записи в базу данных мы можем использовать время UTC и отдельно считать часовой пояс:

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

Источник

Оцените статью