Как добавить время в Python datetime

PythonBeginner
Практиковаться сейчас

Введение

Модуль datetime в Python — мощный инструмент для работы с датами и временем. Этот учебник проведет вас через различные методы добавления времени к объектам datetime, помогая вам выполнять точные и гибкие вычисления времени в Python. Вы узнаете, как использовать timedelta для простых добавлений и рассмотрите практические примеры манипулирования временем.

Понимание модуля Python Datetime

Прежде чем добавлять время, важно понять основные компоненты модуля datetime.

Основные компоненты Datetime

Модуль datetime предоставляет несколько ключевых классов:

Класс Описание
date Представляет дату (год, месяц, день)
time Представляет время (час, минута, секунда)
datetime Объединяет дату и время
timedelta Представляет временной интервал

Создание объектов Datetime

Вы можете создавать объекты datetime несколькими способами. Давайте создадим простой скрипт Python, чтобы увидеть, как это делается.

Откройте интегрированную консоль в WebIDE и перейдите в каталог проекта, если вы еще этого не сделали.

cd ~/project

Создайте новый файл с именем datetime_basics.py в каталоге ~/project с помощью проводника файлов WebIDE или командной строки.

touch datetime_basics.py

Откройте datetime_basics.py в редакторе WebIDE и добавьте следующий код:

from datetime import date, time, datetime

## Создание объекта date
current_date = date.today()
print(f"Текущая дата: {current_date}")

## Создание объекта time (из текущей даты и времени)
current_time = datetime.now().time()
print(f"Текущее время: {current_time}")

## Создание объекта datetime
current_datetime = datetime.now()
print(f"Текущая дата и время: {current_datetime}")

## Создание объекта datetime для определенной даты и времени
specific_datetime = datetime(2023, 6, 15, 14, 30, 45)
print(f"Определенная дата и время: {specific_datetime}")

Сохраните файл. Теперь запустите скрипт из терминала:

python datetime_basics.py

Вы увидите вывод, похожий на этот:

Текущая дата: ГГГГ-ММ-ДД
Текущее время: ЧЧ:ММ:СС.микросекунды
Текущая дата и время: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Определенная дата и время: 2023-06-15 14:30:45

Это демонстрирует, как создавать базовые объекты date, time и datetime.

Ключевые атрибуты Datetime

Объекты datetime имеют атрибуты, такие как year, month, day, hour, minute и second, к которым можно получить доступ.

Давайте добавим в наш скрипт datetime_basics.py, чтобы продемонстрировать доступ к этим атрибутам.

Откройте datetime_basics.py снова и добавьте следующие строки в конец:

print(f"Год: {specific_datetime.year}")
print(f"Месяц: {specific_datetime.month}")
print(f"День: {specific_datetime.day}")
print(f"Час: {specific_datetime.hour}")
print(f"Минута: {specific_datetime.minute}")
print(f"Секунда: {specific_datetime.second}")

Сохраните файл и запустите его снова:

python datetime_basics.py

Вывод теперь будет включать отдельные компоненты specific_datetime:

Текущая дата: ГГГГ-ММ-ДД
Текущее время: ЧЧ:ММ:СС.микросекунды
Текущая дата и время: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Определенная дата и время: 2023-06-15 14:30:45
Год: 2023
Месяц: 6
День: 15
Час: 14
Минута: 30
Секунда: 45

Понимание этих основ — первый шаг к выполнению операций с добавлением времени.

Добавление времени с помощью timedelta

Наиболее распространенный способ добавления времени к объекту datetime в Python — использование класса timedelta. Объект timedelta представляет собой временной интервал.

Создание объектов timedelta

Вы можете создавать объекты timedelta, используя различные единицы времени, такие как days, hours, minutes, seconds, milliseconds и microseconds.

Давайте создадим новый скрипт Python, чтобы изучить timedelta.

Создайте новый файл с именем time_addition.py в каталоге ~/project.

touch time_addition.py

Откройте time_addition.py и добавьте следующий код:

from datetime import datetime, timedelta

## Получение текущей даты и времени
current_datetime = datetime.now()
print(f"Текущая дата и время: {current_datetime}")

## Создание timedelta из 5 дней
five_days = timedelta(days=5)
print(f"Timedelta из 5 дней: {five_days}")

## Создание timedelta из 3 часов и 30 минут
three_hours_thirty_minutes = timedelta(hours=3, minutes=30)
print(f"Timedelta из 3 часов 30 минут: {three_hours_thirty_minutes}")

## Создание timedelta из 1 недели и 2 дней
one_week_two_days = timedelta(weeks=1, days=2)
print(f"Timedelta из 1 недели 2 дней: {one_week_two_days}")

Сохраните файл и запустите его:

python time_addition.py

Вывод будет содержать текущую дату и время, а также созданные объекты timedelta:

Текущая дата и время: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Timedelta из 5 дней: 5 дней, 0:00:00
Timedelta из 3 часов 30 минут: 3:30:00
Timedelta из 1 недели 2 дней: 9 дней, 0:00:00

Обратите внимание, что timedelta(weeks=1, days=2) представлено как 9 дней. timedelta нормализует временной интервал в дни, секунды и микросекунды.

Добавление timedelta к datetime

Вы можете добавить объект timedelta к объекту datetime, чтобы получить новый объект datetime, представляющий будущую точку во времени.

Давайте добавим код в time_addition.py, чтобы выполнить добавление времени.

Откройте time_addition.py и добавьте следующие строки в конец:

## Добавление 5 дней к текущей дате и времени
future_datetime_days = current_datetime + five_days
print(f"Дата и время после добавления 5 дней: {future_datetime_days}")

## Добавление 3 часов и 30 минут к текущей дате и времени
future_datetime_hours_minutes = current_datetime + three_hours_thirty_minutes
print(f"Дата и время после добавления 3 часов 30 минут: {future_datetime_hours_minutes}")

## Добавление 1 недели и 2 дней к текущей дате и времени
future_datetime_weeks_days = current_datetime + one_week_two_days
print(f"Дата и время после добавления 1 недели 2 дней: {future_datetime_weeks_days}")

Сохраните файл и запустите его:

python time_addition.py

Вывод теперь будет содержать исходную дату и время, а также результирующие даты и время после добавления объектов timedelta:

Текущая дата и время: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Timedelta из 5 дней: 5 дней, 0:00:00
Timedelta из 3 часов 30 минут: 3:30:00
Timedelta из 1 недели 2 дней: 9 дней, 0:00:00
Дата и время после добавления 5 дней: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Дата и время после добавления 3 часов 30 минут: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Дата и время после добавления 1 недели 2 дней: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды

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

Практические вычисления со временем

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

Вычисление будущих дат

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

Давайте добавим функцию в time_addition.py для вычисления будущей даты.

Откройте time_addition.py и добавьте следующее определение функции и её использование в конце:

def get_future_date(start_date, days_to_add):
    """Вычисляет будущую дату, добавляя заданное количество дней."""
    future_date = start_date + timedelta(days=days_to_add)
    return future_date

## Пример: Найдите дату, отстоящую от текущей на 30 дней
thirty_days_from_now = get_future_date(datetime.now(), 30)
print(f"Дата через 30 дней: {thirty_days_from_now}")

Сохраните файл и запустите его:

python time_addition.py

Вывод теперь будет включать дату, отстоящую от текущей на 30 дней:

Текущая дата и время: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Timedelta из 5 дней: 5 дней, 0:00:00
Timedelta из 3 часов 30 минут: 3:30:00
Timedelta из 1 недели 2 дней: 9 дней, 0:00:00
Дата и время после добавления 5 дней: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Дата и время после добавления 3 часов 30 минут: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Дата и время после добавления 1 недели 2 дней: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Дата через 30 дней: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды

Вычисление разницы во времени

Вы также можете вычесть один объект datetime из другого, чтобы получить объект timedelta, представляющий временной интервал между ними.

Давайте добавим код в time_addition.py, чтобы вычислить разницу между двумя датами.

Откройте time_addition.py и добавьте следующий код в конец:

## Вычисление разницы между двумя конкретными датами и временем
date1 = datetime(2023, 1, 1)
date2 = datetime(2023, 12, 31)

time_difference = date2 - date1
print(f"Разница между {date1} и {date2}: {time_difference}")

## Доступ к компонентам разницы timedelta
print(f"Разница в днях: {time_difference.days}")
print(f"Общая разница во времени в секундах: {time_difference.total_seconds()}")

Сохраните файл и запустите его:

python time_addition.py

Вывод покажет разницу между двумя датами:

Текущая дата и время: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Timedelta из 5 дней: 5 дней, 0:00:00
Timedelta из 3 часов 30 минут: 3:30:00
Timedelta из 1 недели 2 дней: 9 дней, 0:00:00
Дата и время после добавления 5 дней: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Дата и время после добавления 3 часов 30 минут: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Дата и время после добавления 1 недели 2 дней: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Дата через 30 дней: ГГГГ-ММ-ДД ЧЧ:ММ:СС.микросекунды
Разница между 2023-01-01 00:00:00 и 2023-12-31 00:00:00: 364 дня, 0:00:00
Разница в днях: 364
Общая разница во времени в секундах: 31449600.0

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

Резюме

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