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) |
Заметки:
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
.В логическом контексте все объекты даты считаются истинными.