На этом шаге мы рассмотрим назначение и примеры использования содержимого этого класса.
Класс timedelta из модуля datetime позволяет выполнять операции над датами - например: складывать, вычитать, сравнивать и др. Конструктор класса имеет следующий формат:
timedelta ( [days][, seconds][, microseconds][, milliseconds][, minutes] [, hours] [, weeks] )
Все параметры не являются обязательными и по умолчанию имеют значение 0. Первые три параметра считаются основными:
Все остальные параметры автоматически преобразуются в следующие значения:
>>> import datetime >>> datetime.timedelta (milliseconds=1) datetime.timedelta(0, 0, 1000)
>>> datetime.timedelta (minutes=1)
datetime.timedelta(0, 60)
>>> datetime.timedelta (hours=1)
datetime.timedelta(0, 3600)
>>> datetime.timedelta (weeks=1)
datetime.timedelta(7)
Значения можно указывать через запятую в порядке следования параметров или присвоить значение названию параметра. В качестве примера укажем один час:
>>> datetime.timedelta (0, 0, 0, 0, 0, 1) datetime.timedelta(0, 3600) >>> datetime.timedelta (hours=1) datetime.timedelta(0, 3600)
Получить результат можно с помощью следующих атрибутов:
Пример:
>>> d = datetime.timedelta( hours=1, days=2, milliseconds=1 ) >>> d datetime.timedelta(2, 3600, 1000) >>> d.days, d.seconds, d.microseconds (2, 3600, 1000) >>> repr (d), str(d) ('datetime.timedelta(2, 3600, 1000)', '2 days, 1:00:00.001000')
Получить результат в секундах позволяет метод total_seconds():
>>> d = datetime.timedelta (minutes=1)
>>> d.total_seconds()
60.0
Над экземплярами класса timedelta можно производить арифметические операции +, -, /, //, % и *, использовать унарные операторы + и -, а также получать абсолютное значение с помощью функции abs(). Примеры:
>>> d1 = datetime.timedelta (days=2) >>> d2 = datetime.timedelta (days=7) >>> d1 + d2, d2 - d1 # Сложение и вычитание (datetime.timedelta(9), datetime.timedelta(5)) >>> d2 / d1 # Деление 3.5 >>> d1 / 2, d2 / 2.5 # Деление (datetime.timedelta(1), datetime.timedelta(2, 69120)) >>> d2 // d1 # Деление 3 >>> d1 // 2, d2 // 2 # Деление (datetime.timedelta(1), datetime.timedelta(3, 43200)) >>> d2 % d1 # Остаток datetime.timedelta(1) >>> d1 * 2, d2 * 2 # Умножение (datetime.timedelta(4), datetime.timedelta(14)) >>> 2 * d1, 2 * d2 # Умножение (datetime.timedelta(4), datetime.timedelta(14)) >>> d3 = -d1 >>> d3, abs(d3) (datetime.timedelta(-2), datetime.timedelta(2))
Кроме того, можно использовать операторы сравнения =, ! =, <, <=, > и >=. Пример:
>>> d1 = datetime.timedelta (days=2) >>> d2 = datetime.timedelta (days=7) >>> d3 = datetime.timedelta (weeks=1) >>> d1 == d2, d2 == d3 # Проверка на равенство (False, True) >>> d1 != d2, d2 != d3 # Проверка на неравенство (True, False) >>> d1 < d2, d2 <= d3 # Меньше, меньше или равно (True, True) >>> d1 > d2, d2 >= d3 # Больше, больше или равно (False, True)
Также можно получать строковое представление объекта timedelta с помощью функций str() и rерr():
>>> d = datetime.timedelta (hours = 25, minutes = 5, seconds = 27) >>> str(d) '1 day, 1:05:27' >>> repr(d) 'datetime.timedelta(1, 3927)'
Поддерживаются следующие атрибуты класса:
Выведем значения этих атрибутов:
>>> datetime.timedelta.min datetime.timedelta(-999999999) >>> datetime.timedelta.max datetime.timedelta(999999999, 86399, 999999) >>> datetime.timedelta.resolution datetime.timedelta(0, 0, 1)
На следующем шаге мы рассмотрим класс date.