Datetime.datetime.strptime: примеры (PYTHON)
datetime.datetime.strptime(date_string: str, format: str): datetime.datetimeОсновы функции datetime.strptime
Функция datetime.strptime() является методом класса datetime в модуле datetime. Она выполняет задачу парсинга строкового представления даты и времени, создавая из него объект datetime. Основное применение функции связано с обработкой вводных данных из текстовых файлов, логов, ответов API или пользовательского интерфейса, где время представлено в виде строк.
Синтаксис функции: datetime.strptime(date_string, format).
Первый аргумент, date_string, представляет собой строку, содержащую дату и время. Второй аргумент, format, является строкой, которая определяет, как интерпретировать date_string. Этот формат составляется с использованием специальных кодов формата, например, %Y для года, %m для месяца.
Функция возвращает объект datetime, соответствующий указанной строке и формату. Если строка не соответствует формату, возникает исключение ValueError.
Базовые примеры использования
Разбор даты в стандартном формате ISO 8601.
from datetime import datetime
date_str = "2023-10-26"
dt = datetime.strptime(date_str, "%Y-%m-%d")
print(dt)2023-10-26 00:00:00
Парсинг полной даты и времени.
from datetime import datetime
date_time_str = "26.10.2023 14:30:15"
dt = datetime.strptime(date_time_str, "%d.%m.%Y %H:%M:%S")
print(dt)2023-10-26 14:30:15
Использование текстовых представлений месяца и дня недели.
from datetime import datetime
date_str = "October 26, 2023"
dt = datetime.strptime(date_str, "%B %d, %Y")
print(dt)2023-10-26 00:00:00
Альтернативные методы в Python
dateutil.parser.parse из библиотеки dateutil способен разбирать множество строковых форматов дат автоматически, без явного указания формата. Этот инструмент удобен для обработки разнородных данных, когда точный формат заранее неизвестен.
pandas.to_datetime из библиотеки pandas эффективен для парсинга целых серий или столбцов данных. Метод обладает высокой гибкостью и может также автоматически определять формат.
Выбор метода зависит от задачи. datetime.strptime оптимален, когда формат строки строго определён и известен заранее, что обеспечивает предсказуемость и контроль. Автоматические парсеры используют в ситуациях с нестандартизированным вводом.
Распространённые ошибки
Несоответствие строки и формата - самая частая проблема. Например, использование кода %Y (год с веком) для двузначного года вызывает ошибку.
from datetime import datetime
try:
dt = datetime.strptime("23-10-26", "%Y-%m-%d")
except ValueError as e:
print(f"Ошибка: {e}")Ошибка: time data '23-10-26' does not match format '%Y-%m-%d'
Использование неправильных кодов формата для чисел без ведущих нулей. Код %d ожидает день с ведущим нулём.
from datetime import datetime
try:
dt = datetime.strptime("2023-10-5", "%Y-%m-%d") # День "5" вместо "05"
except ValueError as e:
print(f"Ошибка: {e}")Ошибка: time data '2023-10-5' does not match format '%Y-%m-%d'
Изменения в новых версиях Python
Начиная с Python 3.7, функция datetime.strptime поддерживает директиву %z для часовых поясов в форматах ±HHMM и ±HH:MM. В версии Python 3.11 была добавлена поддержка строк с указанием часового пояса в формате UTC (например, 'Z').
Расширенные примеры
Парсинг даты с микросекундами.
from datetime import datetime
date_str = "2023-10-26 14:30:15.123456"
dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S.%f")
print(dt)
print(dt.microsecond)2023-10-26 14:30:15.123456 123456
Обработка даты с указанием часового пояса (Python 3.7+).
from datetime import datetime
date_str = "2023-10-26T14:30:15+03:00"
dt = datetime.strptime(date_str, "%Y-%m-%dT%H:%M:%S%z")
print(dt)
print(dt.tzinfo)2023-10-26 14:30:15+03:00 UTC+03:00
Использование locale для разбора названий месяцев на разных языках. Требует установки соответствующей локали.
import locale
from datetime import datetime
# Установка локали (пример для русской локали)
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
date_str = "26 октября 2023"
dt = datetime.strptime(date_str, "%d %B %Y")
print(dt)2023-10-26 00:00:00
Разбор только времени из строки, игнорируя дату. Поскольку strptime всегда возвращает datetime, дата устанавливается на 1900-01-01.
from datetime import datetime
time_str = "23:59:58"
dt = datetime.strptime(time_str, "%H:%M:%S")
print(dt)
print(dt.time()) # Получение только объекта time1900-01-01 23:59:58 23:59:58
Парсинг дат в других языках программирования
JavaScript: Используется конструктор Date или библиотека moment.js. Прямой аналог strptime отсутствует в чистом виде, часто полагаются на автоматический разбор, который может быть непоследовательным.
// JavaScript (Node.js)
let dateStr = "2023-10-26T14:30:15";
let dt = new Date(dateStr);
console.log(dt.toISOString());2023-10-26T14:30:15.000Z
PHP: Функция DateTime::createFromFormat работает аналогично strptime.
// PHP
$dateStr = "26.10.2023 14:30";
$dt = DateTime::createFromFormat('d.m.Y H:i', $dateStr);
echo $dt->format('Y-m-d H:i:s');2023-10-26 14:30:00
Go: В языке Go используется метод time.Parse с указанием эталонного формата.
// Go
package main
import (
"fmt"
"time"
)
func main() {
dateStr := "2023-10-26"
dt, err := time.Parse("2006-01-02", dateStr)
fmt.Println(dt)
}2023-10-26 00:00:00 +0000 UTC
питон datetime.datetime.strptime function comments
- питон datetime.datetime.strptime - аргументы и возвращаемое значение
- Функция python datetime.datetime.strptime - описание
- datetime.datetime.strptime - примеры
- datetime.datetime.strptime - похожие методы на python
- datetime.datetime.strptime на php, c#, sql, java
- datetime.datetime.strptime изменения python
- Примеры datetime.datetime.strptime на питон