Метод 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
незаменимым в арсенале каждого разработчика.
Теперь когда мы познакомились с основными типами данных, таких как
Настало время поговорить о их представлении, или о формате их представления. По умолчанию в python для них используются такие форматы:
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 или «после полудня» PM | PM |
%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