Методы объекта datetime.date()
В этом разделе рассмотрены методы экземпляра класса datetime.date с примерами.
Методы экземпляра datetime.date :
- Изменить значения дня, месяца, года в дате date.replace() ,
- Получить кортеж структуры времени из даты date.timetuple() ,
- Григорианский порядковый номер даты date.toordinal() ,
- Получить день недели как int , понедельник = 0 date.weekday() ,
- Получить день недели как int, понедельник = 1 date.isoweekday() ,
- Получить (год ISO, номер недели ISO, день недели ISO) 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() возвращает день недели в виде целого числа, где понедельник равен 1, а воскресенье — 7.
>>> import datetime >>> date = datetime.date.today() >>> date.isoweekday() # 2
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'
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'
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Класс timedelta() модуля datetime
- Примеры использования datetime.timedelta()
- Класс date() модуля datetime
- Методы экземпляра datetime.date()
- Примеры использования datetime.date()
- Класс datetime() модуля datetime
- Методы экземпляра datetime.datetime()
- Примеры работы с модулем datetime
- Класс time() модуля datetime
- Класс tzinfo() модуля datetime
- Класс timezone() модуля datetime
- Правила форматирования strftime() и strptime() модуля datetime
Модуль datetime

Модуль datetime предоставляет классы для обработки времени и даты разными способами. Поддерживается и стандартный способ представления времени, однако больший упор сделан на простоту манипулирования датой, временем и их частями.
Классы, предоставляемые модулем datetime:
Класс datetime.date(year, month, day) — стандартная дата. Атрибуты: year, month, day. Неизменяемый объект.
Класс datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — стандартное время, не зависит от даты. Атрибуты: hour, minute, second, microsecond, tzinfo.
Класс datetime.timedelta — разница между двумя моментами времени, с точностью до микросекунд.
Класс datetime.tzinfo — абстрактный базовый класс для информации о временной зоне (например, для учета часового пояса и / или летнего времени).
Класс datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — комбинация даты и времени.
- datetime.MINYEAR (1) ≤ year ≤ datetime.MAXYEAR (9999)
- 1 ≤ month ≤ 12
- 1 ≤ day ≤ количество дней в данном месяце и году
Методы класса datetime:
datetime.today() — объект datetime из текущей даты и времени. Работает также, как и datetime.now() со значением tz=None.
datetime.fromtimestamp(timestamp) — дата из стандартного представления времени.
datetime.fromordinal(ordinal) — дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.
datetime.now(tz=None) — объект datetime из текущей даты и времени.
datetime.combine(date, time) — объект datetime из комбинации объектов date и time.
datetime.strptime(date_string, format) — преобразует строку в datetime (так же, как и функция strptime из модуля time).
datetime.strftime(format) — см. функцию strftime из модуля time.
datetime.date() — объект даты (с отсечением времени).
datetime.time() — объект времени (с отсечением даты).
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) — возвращает новый объект datetime с изменёнными атрибутами.
datetime.timetuple() — возвращает struct_time из datetime.
datetime.toordinal() — количество дней, прошедших с 01.01.1970.
datetime.timestamp() — возвращает время в секундах с начала эпохи.
datetime.weekday() — день недели в виде числа, понедельник — 0, воскресенье — 6.
datetime.isoweekday() — день недели в виде числа, понедельник — 1, воскресенье — 7.
datetime.isocalendar() — кортеж (год в формате ISO, ISO номер недели, ISO день недели).
datetime.isoformat(sep=’T’) — красивая строка вида «YYYY-MM-DDTHH:MM:SS.mmmmmm» или, если microsecond == 0, «YYYY-MM-DDTHH:MM:SS»
datetime.ctime() — см. ctime() из модуля time.
Пример работы с классом datetime:
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Как получить номер недели из даты

Имею датафрейм Необходимо получить номер недели для каждой даты, для того что бы обнаружить какие ученики пропускали недели. использую метод strftime("%V"), получаю номер недели в году, но в 2021 недели обнуляются. Для этого прибавляю для 2021 года 53, но почему-то у некоторых недель 2020 года значение 106
df.lesson_day_x = df.lesson_day_x.apply(lambda x: int(x.strftime("%V")) if x.strftime("%Y")=='2020' else int(x.strftime("%V")) +53)

Но почему-то некоторые значения в 2020 году становиться равны 106. Подскажите, почему некоторые значения равны 106? Как лучше отправлять ссылки на csv, что бы можно было открыть read_csv?
Отслеживать
25.4k 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
Функция WEEK
Функция WEEK возвращает номер недели в году по дате. При наличии одного параметра возвращает порядковый номер недели в году в диапазоне от 0 до 53 для регионов, где воскресенье считается первым днем недели.
Второй необязательный параметр позволяет уточнить, с какого дня начинается неделя - с воскресенья или с понедельника. Неделя начинается с воскресенья, если второй параметр равен 0 , и с понедельника - если 1 .
Синтаксис
SELECT WEEK(дата) FROM имя_таблицы WHERE условие
SELECT WEEK(дата, начало_недели) FROM имя_таблицы WHERE условие
Таблицы для примеров
| id айди |
name имя |
date дата рождения |
|---|---|---|
| 1 | user1 | 1988-03-01 |
| 2 | user2 | 1989-04-02 |
| 3 | user3 | 1990-05-03 |
Пример
При выборке из таблицы выведем номер недели в году:
SELECT *, WEEK(date) as week FROM employees
Результат выполнения кода:
| id айди |
name имя |
date дата рождения |
week номер недели в году |
|---|---|---|---|
| 1 | user1 | 1988-03-01 | 10 |
| 2 | user2 | 1989-04-02 | 14 |
| 3 | user3 | 1990-05-03 | 18 |
Смотрите также
- функцию YEARWEEK ,
которая находит неделю и ее год по дате