Конвертация типов даты и времени

Конвертация типов - это процесс преобразования типа значения из одного вида в другой. В курсе для начинающих по Python мы не раз преобразовывали числа в строки, строки в числа, списки в кортежи и так далее. Преобразование в другой тип данных нам требуется в основном для возможности использования свойств и методов определенного типа. Например, множества позволяют легко избавляться от неуникальных элементов, выполнять пересечение. Числа позволяют складывать значения, строки удобны для «сцепления» символов, списки пригодятся для хранения нескольких изменяемых значений в одном месте.

Теперь у нас появляются с вами три новых типа данных: 

  • date
  • time
  • datetime

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

Преобразование datetime в date или в time

Можно преобразовать объект datetime в date или в time, и мы с вами это уже делали. Вспоминаем про методы .date() и .time().

from datetime import datetime


dt = datetime(2024, 8, 21, 10, 5, 30)
print(dt, type(dt))

only_date = dt.date()
print('Дата:', only_date, type(only_date))

only_time = dt.time()
print('Время:', only_time, type(only_time))

Метод .date() возвращает новый объект даты, метод .time() вернет новый объект времени:

2024-08-21 10:05:30 <class 'datetime.datetime'>
Дата: 2024-08-21 <class 'datetime.date'>
Время: 10:05:30 <class 'datetime.time'>

 

Преобразование из date в datetime

Для преобразования даты в объект дата-время нужно вспомнить про порождающий метод .combine(), который имеется в наличии у класса datetime. Ему нужно передать обязательно дату и время и он создаст на их основании новый объект дата-время.

Какую дату передавать в данный метод понятно, именно ту, что хотим преобразовать. А вот что делать со временем? Здесь все зависит от вашей задачи. Обычно заполняют начальным временем 00:00:00, но можно и проставить любым другим значением:

from datetime import date, time, datetime

my_date = date(2024, 8, 21)
date1 = datetime.combine(my_date, time())
print(date1, type(date1))   # 2024-08-21 00:00:00 <class 'datetime.datetime'>

my_time = time(12, 30)
date2 = datetime.combine(my_date, my_time)
print(date2, type(date2))  # 2024-08-21 12:30:00 <class 'datetime.datetime'>


Преобразование из time в datetime

Если у вас имеется время и вы хотите его преобразовать в объект дата-время, то вам опять же на помощь придет метод .combine(). Чтобы выполнить эту операцию, вам также понадобится объект date, у которого обязательно нужно передавать как год, так и месяц и день.

from datetime import datetime, time, date

time1 = time(15, 30, 0)

# Конвертируем объекты date и time в объект datetime
date1 = datetime.combine(date(2024, 9, 2), time1)

print(date1, type(date1))   # 2024-09-02 15:30:00 <class 'datetime.datetime'>

 

Перейти к следующему шагу

Комментарии