Python datetime strftime example

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.

  1. We imported datetime class from the datetime module. It’s because the object of datetime class can access strftime() method.
    Import datetime object
  2. The datetime object containing current date and time is stored in now variable.
    Python Format Code
  3. The strftime() method can be used to create formatted strings.
    Python Format Code
  4. The string you pass to the strftime() method may contain more than one format codes.
    Python Format Codes
Читайте также:  Please enter password to access this page

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. %
Читайте также:  Use ttf font in css

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.

Источник

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