Установка конкретного времени в дате с Python: strptime

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вам нужно задать определённые час и минуту в объекте datetime, лучше всего сделать это с использованием метода replace:

Python
Скопировать код
from datetime import datetime

# Предположим, у нас есть строка, представляющая дату 'date_str', и она соответствует заданному формату 'date_format'
date_obj = datetime.strptime(date_str, date_format)
new_datetime = date_obj.replace(hour=10, minute=30) # Время утреннего кофе ☕🥐

print(new_datetime)  # Вывод: "ГГГГ-ММ-ДД 10:30:00"

Чтобы установить нужное вам время, в методе replace используйте ваши значения hour и minute.

Кинга Идем в IT: пошаговый план для смены профессии

Управление датами и временем

Модификация компонентов даты

Используя метод replace, вы можете менять такие компоненты даты, как день, месяц, год, при этом никак не влияя на исходную дату или время:

Python
Скопировать код
christmas_date = date_obj.replace(month=12, day=25) # Наступающим с Рождеством! 🎄

Установка времени на начало или конец дня

Для указания начала или конца дня:

Python
Скопировать код
start_of_day = date_obj.replace(hour=0, minute=0) # Время пробуждаться...
end_of_day = date_obj.replace(hour=23, minute=59, second=59) # Время подводить итоги...

Слияние даты и времени

datetime.combine объединяет объекты date и time:

Python
Скопировать код
from datetime import date, time

custom_date = date(2022, 12, 25) # Рождество! 🎅
custom_time = time(11, 59) # Время для обеда
new_datetime = datetime.combine(custom_date, custom_time)

Для более сложных сценариев следует обратиться к документации Python по модулю datetime.

Практические примеры

Форматы дат

strptime прекрасно конвертирует даты из строк:

Python
Скопировать код
datetime.strptime("26 Sep 2012", "%d %b %Y") # Приветствуем в прошлом!

Обратите внимание на форматы дат. Для ISO:

Python
Скопировать код
datetime.strptime("2012-09-26", "%Y-%m-%d") # Обратно к будущему!

События в разных часовых поясах

Работаете с часовыми поясами? pytz или zoneinfo к вашим услугам:

Python
Скопировать код
from datetime import datetime
from pytz import timezone

new_york_time = datetime.now(timezone('America/New_York')) # Бетонные джунгли…

Будьте осторожны: високосные секунды

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

Форматирование с помощью strftime

Для привлекательного отображения даты используйте strftime:

Python
Скопировать код
formatted_time = new_datetime.strftime("%A, %d %B %Y, %I:%M %p") # Стиль и мода! 😎
# Вывод: "Воскресенье, 25 декабря 2022 г., 11:59 AM"

Визуализация

Допустим, ваш объект datetime — это билет на поезд 🚆, на котором указана дата, но без времени:

Markdown
Скопировать код
Билет: [📅 День, 🗓️ Месяц, 📆 Год]

Использование метода replace для установки конкретного времени аналогично добавлению времени отправления к вашему билету:

Markdown
Скопировать код
Штамп: [⏰ 15:00] # Время для чаепития 🍵

Теперь у нас есть полный билет с указанием даты и времени отбытия:

Markdown
Скопировать код
Посадочный талон: [📅 День, 🗓️ Месяц, 📆 Год, ⏰ 15:00]

В Python кодирование подобно заполнению такого билета: мы отправляемся в путь ровно в 15:00, независимо от даты.

Полезные материалы

  1. DateTime — Официальная документация Python
  2. Использование Python datetime – Real Python
  3. Получение сегодняшней даты в формате ГГГГ-ММ-ДД в Python – Stack Overflow
  4. Преобразование date в datetime в Python – Stack Overflow
  5. Pytz – PythonHosted
  6. Python datetime (с примерами) – Programiz