Datetime now python strftime

Метод 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.

Источник

Форматирование даты и времени в Python

Форматирование даты и времени в Python

Сегодня рассмотрим два метода strftime и strptime из стандартной библиотеки datetime в языке программирования Python.

Описание формата strftime

Кратко говоря, strftime преобразует объект date в строковую дату.

Это выглядит так: dateobject.strftime(format).

«Format» — это желаемый формат строки даты, который хочет получить пользователь. Формат строится с использованием кодов, приведенных ниже:

  • %a — будний день сокращенно (Пн, Вт,…)
  • %A — будний день полностью (Понедельник, Вторник,…)
  • %w — будний день, как десятичное число (1, 2, 3,…)
  • %d — день месяца в числах (01, 02, 03,…)
  • %b — месяцы сокращенно (Янв, Фев,…)
  • %B — название месяцев полностью (Январь, Февраль,…)
  • %m — месяцы в числах (01, 02, 03,…)
  • %y — года без века (19, 20, 21)
  • %Y — года с веком (2019, 2020, 2021)
  • %H — 24 часа в сутки (с 00 до 23)
  • %I — 12 часов в сутки (с 01 до 12)
  • %p — AM и PM (00-12 и 12-00)
  • %M — минуты (от 00 до 59)
  • %S — секунды (от 00 до 59)
  • %f — миллисекунды (6 десятичных чисел)

Использование strftime

Давайте рассмотрим конкретный пример — преобразование текущего времени в строку даты:

import datetime from datetime import datetime now = datetime.now() print(now)

Давайте теперь преобразуем приведенный выше объект datetime в строку datetime:

Если вы хотите напечатать месяц в качестве сокращенного названия, замените %m на %b, как показано ниже:

Преобразование даты в strftime

Преобразование даты в строку очень похоже на преобразование datetime в строку.

Рассмотрим пример — преобразование текущего объекта даты в строку даты:

today = datetime.today() print(today)

Давайте преобразуем приведенный выше объект date в строку даты с помощью метода strftime:

Отображение миллисекунд

Чтобы получить строку даты с миллисекундами, используйте код формата %f в конце, как показано ниже:

today = datetime.today() today.strftime("%Y-%m-%d %H:%M:%S.%f")

Описание формата strptime

Strptime используется для преобразования строки в объект datetime. Тоесть обратное действие методу strftime. Это выглядит так: strptime(date_string, format).

Разберем пример: strptime(«9/23/20», «%d/%m/%y»). Формат «%d/%m/%y» представляет собой соответствующий формат «9/23/20». Результатом приведенной выше команды будет объект datetime.

Формат строится с использованием заранее определенных кодов. Есть много кодов на выбор. Наиболее важные из них были перечислены ранее (смотрите 1 пункт в содержании).

Использование метода strptime

Преобразуем строку даты в объект datetime:

import datetime datetime.datetime.strptime("09/23/2030 8:28","%m/%d/%Y %H:%M")
datetime.datetime(2030, 9, 23, 8, 28)

Заключение

На этом всё. Желаю удачи в программировании!

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Егоров Егор

Здравствуйте, Егор!
Статья замечательная, спасибо за неё!
Пытаюсь научиться программировать, невзирая на свой зрелый возраст.
Предполагаю, что метод «strptime» должен понадобиться мне для решения ближайших намеченных задач преобразования частей строк вида «31 декабря 2010» в объекты datetime — («%d/%m/%Y»).
Наверное «декабря» и прочие неправильные или лишние буквы в названиях месяцев, тоже придётся обрабатывать до вида «декабрь»? Будет видно по мере реализации задачи.
С преобразованием времени (часы, минуты) вроде должно быть проще.
Надеюсь в Python 3.8 всё это будет работать.

Здравствуйте, Борис.
Я бы советовал вам, произвести небольшое сопоставление строчного именования месяца в численное.
Например: «Январь», «Января» — 01,
«Февраль», «Февраля» — 02,
«Март», «Марта» — 03. Для того, чтобы легче было преобразовать дату в формат datetime.

Источник

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