Реклама ООО Таймвэб
Реклама ООО Таймвэб
Реклама ООО Таймвэб

Метод strptime() и strftime() в Python

Обсудить
Метод strptime() и strftime() в Python
Реклама. ООО «ТаймВэб». erid: LjN8KKZry

Работа с датами и временем является одной из базовых задач в программировании, так как многие приложения требуют точного учета и обработки этих данных. Возможности языка Python позволяют эффективно управлять датами и временем, переводя их в различные форматы для удобства применения. 

В этой статье мы изучим методы strptime() и strftime(), которые позволяют конвертировать строки в объекты даты и времени и обратно. Таким образом, они повышают удобство и гибкость при работе с временными данными в Python.

Источники даты и времени

Как правило, компьютер получает информацию о дате и времени из встроенных системных часов. Их можно предварительно настроить на нужные параметры, а затем применять в различных ситуациях при разработке. Например, внутренние часы часто используются для генерации случайных чисел, что бывает необходимо во многих проектах для создания элементарной рандомности.

Альтернативным источником данных о дате и времени является сетевая синхронизация при подключении к интернету. Полученную информацию тоже можно применять для тех или иных потребностей. 

Например, сравнивать различные даты, которые связаны с конкретными событиями, и вычислять интервалы между ними – часы, дни и т.д. Это полезно для ускорения расчетов или вывода информации в таблицы. Кроме того, синхронизация с сетевыми источниками обеспечивает актуальность временных данных, что особенно важно для приложений, которые требуют точного учета этих показателей. 

Применяя оба метода получения даты и времени (системных часов и сетевой синхронизации), можно создать надежные и точные механизмы работы с этими данными в Python.

Модуль datetime

Язык Python поддерживает множество инструментов для управления данными о времени и их преобразования в другие форматы. Все эти функции собраны в отдельном модуле datetime, который предоставляет удобный интерфейс для работы с датами и временем. 

Модуль datetime подключается стандартным способом, как другие модули или библиотеки в Python. Он позволяет не только выводить и сохранять данные о времени, но и применять таймеры для запуска различных скриптов. 

Одним из удобных инструментов этого модуля является возможность привязывать отсчет времени к любому событию. Еще одной важной особенностью считается поддержка различных форматов для вывода даты и времени. 

Например:

  • в некоторых странах сначала указывается день, затем месяц, часы и минуты;
  • в других странах сначала идут данные о времени, а затем дата;
  • иногда сначала может быть указан месяц или даже год, а потом уже числа и дни недели;
  • месяцы могут быть записаны как буквами, так и цифрами.

Возможности модуля datetime позволяют гибко реагировать на эти отличия и выводить все временные данные в едином формате, чтобы избежать путаницы и программных ошибок. Это особенно полезно при обработке больших массивов данных для обеспечения их правильной и точной интерпретации в виде строк и чисел.

Метод strptime()

В языке Python даты и время представляются в виде объектов специального формата, который отличается от обычных строковых и числовых типов данных. Чтобы облегчить преобразование строковых представлений дат и времени в объекты datetime и обратно, в Python предусмотрены специальные встроенные функции. Одной из них является метод strptime().

Этот метод  можно применять для перевода заданной строки данных в формат datetime. Для примера рассмотрим следующий его базовый синтаксис:

datetime.strptime(string_date, 'params')

Здесь:

  • string_date – это собственно искомая строка;
  • params – те самые международные стандарты времени, в которых будет выводиться итоговый объект datetime. 

Подробный процесс, как настроить эти параметры, рассмотрим в следующих разделах. А пока приведем несколько вариантов применения этого синтаксиса для вывода дат:

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)

Здесь мы преобразуем строки дат в объекты datetime, применяя различные популярные форматы. 

Сам формат указывается с помощью символа процента %, за которым следует спецификатор: 

  • день – %d;
  • месяц – %m, %В или %b;
  • год – %Y или %y.

Результат вывода:

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

Метод strftime()

Теперь рассмотрим метод с обратной функцией – strftime(), который выводит объекты типа datetime в обычную строку. Преимущество этого метода в том, что он позволяет преобразовывать данные в любой требуемый формат. 

Базовый синтаксис этой команды выглядит следующим образом:

object.strftime("params")

В отличие от первого метода, здесь:

  • в начале строки идет элемент типа object – это и есть объект времени, который вводится в команду;
  • 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

При желании можно комбинировать оба метода, strptime() и strftime(), чтобы переводить строки в даты и обратно. Такой подход позволяет легко редактировать эти данные в обычном строчном виде, возвращая потом в понятный системе формат времени.

Список кодов форматов

Теперь рассмотрим различные варианты форматирования даты и времени по методам strptime и strftime. Их существует множество разновидностей, включая сокращенные записи дней недели, полные названия месяцев и многое другое. Ниже приведем примеры основных кодов форматирования.

Дни недели:

  • %a – сокращенное название дня недели (прописная буква).
  • %A – полное название дня недели (заглавная буква).

Пример:

a_time = datetime.now()
print(a_time.strftime('%a'))

2022-11-11 11:12:50.176899 Fri

A_time = datetime.now()
print(A_time.strftime('%A'))

Friday

Далее %b применяется для вывода названия месяцев, тоже в короткой и длинной форме, в зависимости от регистра:

b_time = datetime.now()
temp_date='11 Nov 2022'
today = datetime.strptime(temp_date,'%d %b %Y')

print(today,'\n', b_time.strftime('%b'))

2022-11-11 00:00:00 
Nov


temp_date='11 November 2022'
today = datetime.strptime(temp_date,'%d %B %Y')

print(today)

2022-11-11 00:00:00 

Стоит отметить, что благодаря встроенным функциям модуля datetime можно применять как русские, так и английские названия для вывода дат и месяцев, а также на других языках.

применяется для краткого написания полной строки даты (месяц, год, число, минуты и секунды):

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-часовом формате;
  • %I – в формате от 1 до 12.

Пример:

H_time = datetime.now()
print(H_time.strftime('%H'))

I_time = datetime.now()
print(I_time.strftime('%I'))

%j применяется для вывода дней в году (числа от 1 до 366):

j_time = datetime.now()
print(j_time.strftime('%j'))

%m – аналогично выводит месяцы в году (от 1 до 12):

m_time = datetime.now()
print(m_time.strftime('%m'))

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

M_time = datetime.now()
print(M_time.strftime('%M'))

%p выводит время в формате до и после полудня, а %S – секунды:

p_time = datetime.now()
print(p_time.strftime('%I%p'))


S_time = datetime.now()
print(S_time.strftime('%S'))

%U применяется для вывода порядкового номера недели в году. 

%W – применяется для отсчета дней с понедельника, а не воскресенья (как в РФ):

U_time = datetime.now()
print(U_time.strftime('%U'))


W_time = datetime.now()
print(W_time.strftime('%W'))

%w означает дни недели внутри семидневки:

w_time = datetime.now()
print(w_time.strftime('%w'))

Напоследок, самые общие команды для вывода дат и времени в привычном формате:

  • месяц/год/число;
  • минута/час/секунды. 

Для этого применяется соответственно %x и %X:

temp_time = datetime.strptime('11/10/22', '%x')
print(temp_time)

2022-11-10 00:00:00


X_time = datetime.now()
print(X_time.strftime('%X'))

11:57:13

Аналогично %y и %Y применяются для вывода года в двухцифровом и в полном формате:

y_time = datetime.now()
print(y_time.strftime('%y'))


Y_time = datetime.now()
print(Y_time.strftime('%Y'))

%Z применяется для отдельного вывода временной зоны, то есть часового пояса. А двойной значок процента %% позволяет добавить его непосредственно в строку:

temp_time = datetime.strptime('10%11%22', '%d%%%m%%%y')
print(temp_time)

2022-11-10 00:00:00

Заключение

Завершая статью, стоит указать еще несколько возможностей модуля datetime. При подключении библиотеки locale (буквально – местные названия) можно переключаться на любые пользовательские форматы для дат и дней недели:

import locale
locale.setlocale(locale.LC_ALL, 'ru_RU')

current_time = datetime.now()

print(current_time.strftime('%A'))

В целом, этот метод предоставляет все необходимые инструменты для работы с датами и временем в Python. А его простота и краткость подойдут любому пользователю для быстрого освоения и применения.

Наши постоянные авторы и читатели делятся лайфхаками, основанными на личном опыте. Полная свобода самовыражения.

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте