- Python strftime()
- Example 1: datetime to string using strftime()
- How strftime() works?
- Example 2: Creating string from a timestamp
- Format Code List
- Example 3: Locale’s appropriate date and time
- Метод strptime() и strftime() в Python: инструкция и примеры
- Метод strptime()
- Метод strftime()
- Список кодов формата
- %a
- %A
- %b
- %B
- %c
- %d
- %H
- %I
- %j
- %m
- %M
- %p
- %S
- %U
- %w
- %W
- %x
- %X
- %y
- %Y
- %Z
- %%
- Работа с локальными обозначениями
- Заключение
Python strftime()
The strftime() method returns a string representing date and time using date, time or datetime object.
Example 1: datetime to string using strftime()
The program below converts a datetime object containing current date and time to different string formats.
from datetime import datetime now = datetime.now() # current date and time year = now.strftime("%Y") print("year:", year) month = now.strftime("%m") print("month:", month) day = now.strftime("%d") print("day:", day) time = now.strftime("%H:%M:%S") print("time:", time) date_time = now.strftime("%m/%d/%Y, %H:%M:%S") print("date and time:",date_time)
When you run the program, the output will something like be:
year: 2018 month: 12 day: 24 time: 04:59:31 date and time: 12/24/2018, 04:59:31
Here, year , day , time and date_time are strings, whereas now is a datetime object.
How strftime() works?
In the above program, %Y , %m , %d etc. are format codes. The strftime() method takes one or more format codes as an argument and returns a formatted string based on it.
- We imported datetime class from the datetime module. It’s because the object of datetime class can access strftime() method.
- The datetime object containing current date and time is stored in now variable.
- The strftime() method can be used to create formatted strings.
- The string you pass to the strftime() method may contain more than one format codes.
Example 2: Creating string from a timestamp
from datetime import datetime timestamp = 1528797322 date_time = datetime.fromtimestamp(timestamp) print("Date time object:", date_time) d = date_time.strftime("%m/%d/%Y, %H:%M:%S") print("Output 2:", d) d = date_time.strftime("%d %b, %Y") print("Output 3:", d) d = date_time.strftime("%d %B, %Y") print("Output 4:", d) d = date_time.strftime("%I%p") print("Output 5:", d)
When you run the program, the output will be:
Date time object: 2018-06-12 09:55:22 Output 2: 06/12/2018, 09:55:22 Output 3: 12 Jun, 2018 Output 4: 12 June, 2018 Output 5: 09AM
Format Code List
The table below shows all the codes that you can pass to the strftime() method.
Directive | Meaning | Example |
%a | Abbreviated weekday name. | Sun, Mon, . |
%A | Full weekday name. | Sunday, Monday, . |
%w | Weekday as a decimal number. | 0, 1, . 6 |
%d | Day of the month as a zero-padded decimal. | 01, 02, . 31 |
%-d | Day of the month as a decimal number. | 1, 2, . 30 |
%b | Abbreviated month name. | Jan, Feb, . Dec |
%B | Full month name. | January, February, . |
%m | Month as a zero-padded decimal number. | 01, 02, . 12 |
%-m | Month as a decimal number. | 1, 2, . 12 |
%y | Year without century as a zero-padded decimal number. | 00, 01, . 99 |
%-y | Year without century as a decimal number. | 0, 1, . 99 |
%Y | Year with century as a decimal number. | 2013, 2019 etc. |
%H | Hour (24-hour clock) as a zero-padded decimal number. | 00, 01, . 23 |
%-H | Hour (24-hour clock) as a decimal number. | 0, 1, . 23 |
%I | Hour (12-hour clock) as a zero-padded decimal number. | 01, 02, . 12 |
%-I | Hour (12-hour clock) as a decimal number. | 1, 2, . 12 |
%p | Locale’s AM or PM. | AM, PM |
%M | Minute as a zero-padded decimal number. | 00, 01, . 59 |
%-M | Minute as a decimal number. | 0, 1, . 59 |
%S | Second as a zero-padded decimal number. | 00, 01, . 59 |
%-S | Second as a decimal number. | 0, 1, . 59 |
%f | Microsecond as a decimal number, zero-padded on the left. | 000000 — 999999 |
%z | UTC offset in the form +HHMM or -HHMM. | |
%Z | Time zone name. | |
%j | Day of the year as a zero-padded decimal number. | 001, 002, . 366 |
%-j | Day of the year as a decimal number. | 1, 2, . 366 |
%U | Week number of the year (Sunday as the first day of the week). All days in a new year preceding the first Sunday are considered to be in week 0. | 00, 01, . 53 |
%W | Week number of the year (Monday as the first day of the week). All days in a new year preceding the first Monday are considered to be in week 0. | 00, 01, . 53 |
%c | Locale’s appropriate date and time representation. | Mon Sep 30 07:06:05 2013 |
%x | Locale’s appropriate date representation. | 09/30/13 |
%X | Locale’s appropriate time representation. | 07:06:05 |
%% | A literal ‘%’ character. | % |
Example 3: Locale’s appropriate date and time
from datetime import datetime timestamp = 1528797322 date_time = datetime.fromtimestamp(timestamp) d = date_time.strftime("%c") print("Output 1:", d) d = date_time.strftime("%x") print("Output 2:", d) d = date_time.strftime("%X") print("Output 3:", d)
When you run the program, the output will be:
Output 1: Tue Jun 12 09:55:22 2018 Output 2: 06/12/18 Output 3: 09:55:22
Format codes %c , %x and %X are used for locale’s appropriate date and time representation.
We also recommend you to check Python strptime(). The strptime() method creates a datetime object from a string.
Метод strptime() и strftime() в Python: инструкция и примеры
Для работы с датой и времен в Python предназначен модуль datetime . Этот модуль позволяет всячески манипулировать с временными величинами, что весьма полезно в скриптах, ориентированных на использование в реальном времени. С помощью этого модуля можно считать текущее время на устройстве, узнать разницу между разными моментами времени или, наоборот, прибавить к текущему времени некоторый временной отрезок и запустить счетчик на сайте с отсчетом до какого-нибудь события.
Одна из проблем, связанных с любыми датами и временем — это его формат. В Америке распространен формат MM-DD-YYYY: сначала идет месяц, потом день и в конце располагается год. Для русскоязычных стран более привычным является формат DD-MM-YYYY. Помимо них существуют иные записи даты и времени. Иногда в скриптах возникает необходимость считывать и выводить данные формата datetime , то есть дату. Чтобы сделать этот процесс более комфортным, разработчики придумали два метода для преобразования строк в формат datetime и обратно — strptime() и strftime() .
В рамках этого материала мы разберем работу этих методов в Python и практику их применения.
Метод strptime()
Метод класса datetime strptime() принимает в качестве одного из аргументов строку и создает на основе её объект типа datetime. Метод имеет следующий синтаксис:
datetime.strptime(string_date, ‘params’) , где
- string_date — это строка, на основе которой нужно создать объект типа datetime ;
- params — это коды форматы. Их мы рассмотрим в разделе «Список кодов формата». В целом, они передают методу информацию о том, какой формат имеет дата в строке: 10.11.2022, 11.10.2022 или 10 ноябрь 2022.
Для примера возьмем несколько случайных дат с разным форматом и создадим на их основе новые объекты.
Рассмотрим работу datetime strptime в Python 3 на примерах :
from datetime import datetime as dt
first_strdate='10.05.2025'
second_strdate='26-June-2005'
third_strdate='5 Jan, 11'
first_date=dt.strptime(first_strdate, '%d.%m.%Y')
second_date=dt.strptime(second_strdate, '%d-%B-%Y')
third_date=dt.strptime(third_strdate, '%d %b, %y')
print(first_strdate, '->', first_date)
print(second_strdate, '->', second_date)
print(third_strdate, '->', third_date)
10.05.2025 -> 2025-05-10 00:00:00
26-June-2005 -> 2005-06-26 00:00:00
5 Jan, 11 -> 2011-01-05 00:00:00
Как видим, в строке дата может принимать различные форматы. Шаблон, по которому на основе этой строки будет создан новый объект, описывается с помощью кодов формата и пунктуационных знаков, соответствующих этой строке. Разберемся подробнее в принципе их работы.
В первой строке из примера дата имеет формат DD.MM.YYYY. Чтобы передать информацию об этом в метод мы используем следующие обозначения:
- %d — день месяца в виде десятичного числа;
- %m — номер месяца;
- %Y — год с указанием века;
Между кодов мы используем те же пунктуационные разделители, что и в исходной строке.
Метод strftime()
Метод strftime() преобразует объект типа datetime в строку. Метод имеет следующий синтаксис:
- object — объект типа datetime , который необходимо преобразовать в строку;
- params — форматы кода, на основании которых необходимо сформировать строку;
Рассмотрим несколько практических примеров, как это работает на практике:
from datetime import datetime as dt
time = dt.now()
day_of_the_month = time.strftime("%d")
day_of_the_week = time.strftime(("%A"))
month = time.strftime("%B")
year = time.strftime("%Y")
format_of_time = time.strftime("%H:%M")
print('Today is', day_of_the_week+'.', 'It is', day_of_the_month, 'day of the', month, year)
print('Current time', format_of_time)
Today is Thursday. It is 10 day of the November 2022
Current time 15:40
Список кодов формата
В этом разделе размещено описание всех кодов формата.
%a
Сокращенная форма дня недели. Например, Пт или Fri для пятницы в русской и английской локализации.
a_time = datetime.now()
print(a_time.strftime('%a'))
2022-11-11 11:12:50.176899 Fri
%A
Полная форма дня недели. Например, Пятница или Friday для пятницы в русской и английской локализации.
A_time = datetime.now()
print(A_time.strftime('%A'))
%b
Сокращенная форма месяца. Например, Ноя и Nov для ноября в русской и английской локализации.
b_time = datetime.now()
temp_date='11 Nov 2022'
today = datetime.strptime(temp_date,'%d %b %Y')
print(today,'\n', b_time.strftime('%b'))
%B
Полная форма месяца. Например, Ноябрь или November для ноября в русской и английской локализации.
temp_date='11 November 2022'
today = datetime.strptime(temp_date,'%d %B %Y')
print(today)
%c
Код следующего шаблона: (сокращенный день недели) (сокращенное название месяца) (день месяца) (часы:минуты:секунды) (год).
c_time = datetime.now()
temp = datetime.strptime('Mon Nov 7 14:25:10 2022', '%c')
print(c_time.strftime('%c'), '\n', temp)
Fri Nov 11 11:30:00 2022
2022-11-07 14:25:10
%d
d_time = datetime.now()
print(d_time.strftime('%d'))
%H
Часы в 24-часовом формате от 0 до 23.
H_time = datetime.now()
print(H_time.strftime('%H'))
%I
Часы в 12-часовом формате от 1 до 12.
I_time = datetime.now()
print(I_time.strftime('%I'))
%j
Порядковый номер дня в году от 1 до 366.
j_time = datetime.now()
print(j_time.strftime('%j'))
%m
m_time = datetime.now()
print(m_time.strftime('%m'))
%M
M_time = datetime.now()
print(M_time.strftime('%M'))
%p
Код используется вместе с 12-часовым форматом для обозначения времени до полудня и после.
p_time = datetime.now()
print(p_time.strftime('%I%p'))
%S
S_time = datetime.now()
print(S_time.strftime('%S'))
%U
Порядковый номер недели в году от 0 до 52. Нулевая неделя начинается с воскресенья.
U_time = datetime.now()
print(U_time.strftime('%U'))
%w
Порядковый номер дня недели. Воскресенье — 0, суббота — 6.
w_time = datetime.now()
print(w_time.strftime('%w'))
%W
Порядковый номер недели в году. Нулевая неделя начинается с понедельника, а не с воскресенья, как в %U .
W_time = datetime.now()
print(W_time.strftime('%W'))
%x
temp_time = datetime.strptime('11/10/22', '%x')
print(temp_time)
%X
X_time = datetime.now()
print(X_time.strftime('%X'))
%y
y_time = datetime.now()
print(y_time.strftime('%y'))
%Y
Y_time = datetime.now()
print(Y_time.strftime('%Y'))
%Z
Временная зона, при наличии.
%%
temp_time = datetime.strptime('10%11%22', '%d%%%m%%%y')
print(temp_time)
Работа с локальными обозначениями
Для работы с локальными обозначениями, например Декабрь вместо December, можно использовать библиотеку locale:
import locale
locale.setlocale(locale.LC_ALL, 'ru_RU')
current_time = datetime.now()
print(current_time.strftime('%A'))
При использовании этой библиотеки для русскоязычных обозначений важно помнить, что библиотека locale не обрабатывает склонения месяцев и дней. Любые названия должны быть в именительном падеже.
Заключение
В рамках этого материала мы рассмотрели работу методов strptime() и strftime() в Python. Это отличные инструменты для работы с датами и временем. Если вы хотите глубже изучить работу этих методов, то для своей исследовательской деятельности вы можете арендовать облачный сервер в timeweb.cloud.