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