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

Методы объекта datetime.date()

В этом разделе рассмотрены методы экземпляра класса datetime.date с примерами.

Методы экземпляра datetime.date:


date.replace(year=self.year, month=self.month, day=self.day):

Метод date.replace() возвращает объект даты datetime.date с тем же значением, за исключением тех параметров, которым даны новые значения в зависимости от того, какие ключевые аргументы указаны.

>>> import datetime
>>> date = datetime.date.today()
>>> date
# datetime.date(2020, 5, 5)
>>> date.replace(month=7, day=26)
# datetime.date(2020, 7, 26)

date.timetuple():

Метод date.timetuple() возвращает объект структуры времени time.struct_time, например возвращенное функцией time.localtime().

>>> import datetime
>>> date = datetime.date.today()
>>> date.timetuple()
# time.struct_time(tm_year=2020, tm_mon=5, tm_mday=5, 
#                  tm_hour=0, tm_min=0, tm_sec=0, 
#                  tm_wday=1, tm_yday=126, tm_isdst=-1)

Часы, минуты и секунды равны 0, а флаг DST равен -1. Метод date.timetuple() эквивалентен следующему выражению :

time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1))

где yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1 номер дня в текущем году, начиная с 1 для 1 января.

date.toordinal():

Метод date.toordinal() возвращает григорианский порядковый номер даты, где 1 января 1 года имеет порядковый номер 1.

>>> import datetime
>>> date = datetime.date.today()
>>> date.toordinal()
# 737550

date.weekday():

Метод date.weekday() возвращает день недели в виде целого числа, где понедельник равен 0, а воскресенье - 6.

>>> import datetime
>>> date = datetime.date.today()
>>> date.weekday()
# 1

Смотрите также метод date.isoweekday().

date.isoweekday():

Метод date.isoweekday() возвращает день недели в виде целого числа, где понедельник равен 1, а воскресенье - 7.

>>> import datetime
>>> date = datetime.date.today()
>>> date.isoweekday()
# 2

Смотрите также методы date.weekday(), date.isocalendar().

date.isocalendar():

Метод date.isocalendar() возвращает именованный кортеж с тремя компонентами: год year, неделя week и день недели weekday.

Календарь ISO является широко используемым вариантом григорианского календаря.

Год в ISO календаре состоит из 52 или 53 полных недель, где неделя начинается в понедельник и заканчивается в воскресенье. Первая неделя года ISO - это первая (григорианская) календарная неделя года, содержащая четверг. Это называется неделя № 1 и год ISO этого четверга совпадает с его григорианским годом.

Например, 2021 год начинается в пятницу, а первая неделя ISO 2021 года начинается в понедельник, т.е. 4 января 2020 года и заканчивается в воскресенье 10 января 2021 года:

>>> import datetime
>>> datetime.date(2021, 1, 4).isocalendar()
# datetime.IsoCalendarDate(year=2021, week=1, weekday=1)
>>> datetime.date(2021, 1, 10).isocalendar()
# datetime.IsoCalendarDate(year=2021, week=1, weekday=7)

Изменено в Python 3.9: результат изменился с простого кортежа на именованный кортеж.

date.isoformat():

Метод date.isoformat() возвращает строку, представляющую дату в формате ISO 8601 YYYY-MM-DD:

>>> import datetime
>>> datetime.date.today().isoformat()
# '2020-05-05'
>>> date = datetime.date(2021, 12, 4).isoformat()
# '2021-12-04'

Это обратное значение datetime.date.fromisoformat().

date.__str__():

Метод date.__str__() для объекта даты date справедливо утверждение: str(date) эквивалентна методу date.isoformat().

>>> import datetime
>>> date = datetime.date.today()
>>> str(date)
# '2020-05-05'
>>> date = datetime.date(2021, 12, 4)
>>> date.__str__()
# '2021-12-04'

date.ctime():

Метод date.ctime() возвращает строку, представляющую дату:

>>> import datetime
>>> date = datetime.date.today()
>>> date.ctime()
# 'Tue May  5 00:00:00 2020'
>>> datetime.date(2021, 12, 4).ctime()
# 'Sat Dec  4 00:00:00 2021'

Метод date.ctime() эквивалентен выражению:

time.ctime(time.mktime(data.timetuple()))

date.strftime(format):

Метод date.strftime() возвращает строку, представляющую дату, которую задают явной строкой формата.

Коды формата, относящиеся к часам, минутам или секундам, будут отображать значение 0. Полный список директив форматирования смотрите в разделе "Поведение методов strftime() и strptime() модуля datetime".

>>> import datetime
>>> date = datetime.date.today()
>>> date.strftime('%d/%m/%y')
# '05/05/20'
>>> date.strftime('%A %d. %B %Y')
# 'Tuesday 05. May 2020'