Перейти к содержимому

Как узнать номер недели питон

  • автор:

Методы объекта 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

Python 3 логотип

Модуль 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 условие

Таблицы для примеров

таблица employees

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 ,
    которая находит неделю и ее год по дате

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *