В этом разделе рассмотрены методы экземпляра класса datetime.date
с примерами.
datetime.date
:date.replace()
,date.timetuple()
,date.toordinal()
,int
, понедельник = 0 date.weekday()
,date.isoweekday()
,date.isocalendar()
,date.isoformat()
, YYYY-MM-DD
date.__str__()
,date.ctime()
,date.strftime()
.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'