Сообщить об ошибке.

Класс date() модуля datetime в Python

Варианты создания объекта даты datetime.date

Синтаксис:

import datetime

date = datetime.date(year, month, day)

Параметры:

Все аргументы обязательны. Аргументы должны быть целыми числами.

  • year - год в пределах datetime.MINYEAR <= year <= datetime.MAXYEAR,
  • month - месяц в пределах 1 <= month <= 12,
  • day - день в пределах 1 <= day <= n, n - количество дней в данном месяце и году.

Если задан аргумент вне этих диапазонов, вызывается исключение ValueError.

Возвращаемое значение:

Описание:

Класс date() модуля datetime - объект даты, который представляет дату - год, месяц и день в идеализированном календаре, текущий григорианский календарь бесконечно расширяется в обоих направлениях.

Атрибуты экземпляра datetime.date (только для чтения):

  • date.year - возвращает год в диапазоне, указанном выше,
  • date.month - возвращает месяц в диапазоне, указанном выше,
  • date.day - возвращает день в диапазоне, указанном выше.
>>> import datetime
>>> date = datetime.date(2020, 7, 14)
>>> date
# datetime.date(2020, 7, 14)
>>> date.day
# 14
>>> date.month
# 7
>>> date.year
# 2020

Создание объекта datetime.date другими способами:

datetime.date.today():

Подкласс datetime.date.today() возвращает текущую местную дату, что эквивалентно вызову выражения datetime.date.fromtimestamp(time.time()).

>>> import datetime
>>> datetime.date.today()
# datetime.date(2020, 5, 5)

datetime.date.fromtimestamp(timestamp):

Подкласс datetime.date.fromtimestamp() возвращает локальную дату, соответствующую метке времени POSIX, например возвращается функцией time.time().

Если отметка времени выходит за пределы диапазона значений, поддерживаемых функцией localtime() платформы, то это может вызвать исключение OverflowError, а при сбое системной localtime() - исключение OSError. Отметка времени обычно ограничивается годами с 1970 по 2038 год.

Обратите внимание, что в системах без POSIX, которые включают в себя понятие високосных секунд в своем значении временной метки, високосные секунды игнорируются функцией fromtimestamp().

>>> import datetime, time
>>> sec = time.time()
>>> sec
# 1588657177.4476178
>>> datetime.date.fromtimestamp(sec)
# datetime.date(2020, 5, 5)

datetime.date.fromisoformat(date_string):

Подкласс datetime.date.fromisoformat() возвращает дату, соответствующую строке date_string в формате, заданным в любом допустимом формате ISO 8601, кроме порядковых дат (например, YYYY-DDD):

Изменено в Python 3.11: ранее этот метод поддерживал только формат YYYY-MM-DD.

>>> from datetime import date
>>> date.fromisoformat('2019-12-04')
# datetime.date(2019, 12, 4)
>>> date.fromisoformat('20191204')
# datetime.date(2019, 12, 4)
>>> date.fromisoformat('2021-W01-1')
# datetime.date(2021, 1, 4)

datetime.date.fromisocalendar(year, week, day):

Подкласс datetime.date.fromisocalendar() возвращает дату, соответствующую календарной дате ISO, указанной по году year, неделе week и дню day.

Это обратное значение возвращаемое методом date.isocalendar().

Поддерживаемые операции:

ОперацияРезультатЗаметка
date2 = date1 + timedelta'date2' это 'timedelta.days' дней, удаленных из 'date1'.(1)
date2 = date1 - timedeltaВычисляет 'date2' так, что 'date2 + timedelta == date1'. (2)
timedelta = date1 - date2(3)
date1 < date2'date1' считается меньше чем 'date2', когда 'date1' предшествует 'date2' во времени.(4)

Заметки:

  1. date2 перемещается вперед во времени, если timedelta.days > 0, или назад, если timedelta.days < 0. После операции верно равенство date2 - date1 == timedelta.days, timedelta.seconds и timedelta.microseconds игнорируются. Если date2.year будет меньше datetime.MINYEAR или больше datetime.MAXYEAR то появляется исключение OverflowError.
  2. timedelta.seconds и timedelta.microseconds игнорируются.
  3. Значение точно и не может переполниться. timedelta.seconds и timedelta.microseconds равны 0, а после справедливо равенство date2 + timedelta == date1.
  4. Другими словами, date1< date2 тогда и только тогда, когда date1.toordinal() < date2.toordinal(). Сравнение даты вызывает исключение TypeError, если один из объектов сравнения не является объектом даты. Если один из объектов сравнения имеет атрибут timetuple(), то возвращается исключение NotImplemented. Этот хук дает другим типам объектов даты возможность реализовать сравнение смешанного типа. В противном случае, когда объект даты сравнивается с объектом другого типа, то вызывается исключение TypeError.

В логическом контексте все объекты даты считаются истинными.