Изменение формата отображения

Метод strftime в Python является мощным инструментом для форматирования дат и времени. Он позволяет разработчикам преобразовывать объект datetime в строку, представляющую дату и время в заданном формате. Используя этот метод, можно получить высококастомизированные строки, что делает его идеальным для вывода, логирования и передачи данных.

Метод принимает один параметр — строку формата, где специальные символы обозначают различные компоненты даты и времени. Например, %Y возвращает год в полном формате (например, 2024), %m — месяц, а %d — день. Существует множество кодов формата, которые могут использоваться в комбинации для достижения необходимых результатов.

Пример использования:

from datetime import datetime

now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)

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

 

Форматы представления даты и времени

Теперь когда мы познакомились с основными типами данных, таких как

  • time
  • date
  • datetime

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

  • для времени HH:MM:SS или HH:MM:SS.mmmmmm
  • для даты YYYY-MM-DD
  • для даты и времени YYYY-MM-DD HH:MM:SS или YYYY-MM-DD HH:MM:SS.mmmmmm

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

объект_даты.strftime(format_str)

В качестве объекта даты можете использовать любой из типов date, datetime или time. Метод .strftime() принимает строку форматирования, которая позволяет задать формат вывода даты и времени с помощью специальных кодов-символов, которые легко узнать по стоящему перед ними знаку %. Результатом вызова метода .strftime() будет новая строка.

from datetime import datetime, date

current_datetime = datetime.now()
print(current_datetime.strftime('Месяц=%m Год=%Y День:%A Время:%H:%M:%S'))

В таблице ниже приведены наиболее распространенные символы формата, используемые для представления даты и времени, которые можно использовать в строке форматирования даты:

СимволОписаниеПример
%YГод в четырехзначном формате (например, 2023)2023
%mНомер месяца в двухзначном формате (от 01 до 12)04
%dДень месяца в двухзначном формате (от 01 до 31)16
%HЧасы в 24-часовом формате в двухзначном формате (от 00 до 23)16
%IЧасы в 12-часовом формате в двухзначном формате (от 01 до 12)04
%MМинуты в двухзначном формате (от 00 до 59)28
%SСекунды в двухзначном формате (от 00 до 59)45
%fМикросекунды в шестизначном формате (от 000000 до 999999)999221
%pУказание половины дня: «до полудня»  AM или «после полудня» PMPM
%aАббревиатура названия дня недели (например, Mon)Sat
%AПолное название дня недели (например, Monday)Saturday
%bАббревиатура названия месяца (например, Jan)Apr
%BПолное название месяца (например, January)April
%cПолный формат даты и времени в локальной настройкеSat Apr 16 16:28:45 2023
%xПолный формат даты в локальной настройке04/16/23
%XПолный формат времени в локальной настройке16:28:45
%jДень года в трехзначном формате (от 001 до 366)106
%UНомер недели в году, начиная с первого воскресенья как первого дня первой недели в двухзначном формате (от 00 до 53)15
%WНомер недели в году, начиная с первого понедельника как первого дня первой недели в двухзначном формат45

И смотрите как одна и та же дата может выглядеть в разных форматах:

from datetime import datetime

my_datetime = datetime(2023, 9, 1, 18, 45, 30)

print('1 ->', my_datetime.strftime("%Y-%m-%d %H:%M:%S"))   # 1 -> 2023-09-01 18:45:30
print('2 ->', my_datetime.strftime("%B %d, %Y %I:%M %p"))  # 2 -> September 01, 2023 06:45 PM
print('3 ->', my_datetime.strftime("%d/%m/%Y %H:%M:%S"))   # 3 -> 01/09/2023 18:45:30
print('4 ->', my_datetime.strftime("%A, %b %d %Y"))        # 4 -> Friday, Sep 01 2023

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

my_date = date(2023, 9, 1)

print(my_date.strftime("%Y-%m-%d %H:%M:%S"))   #  2023-09-01 00:00:00

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

my_time = time(23, 10, 15)

print(my_time.strftime("%Y-%m-%d %H:%M:%S"))    #  1900-01-01 23:10:15

 

Перейти к следующему шагу

Комментарии