День недели по дате в python [закрыт]
Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 2 года назад .
Нужно найти день недели по дате, но такая формула не работает:
(d + float(2.6 * m - 0.2) - 2 * c + y + float(y/4) + float(c/4))
получается отрицательное число. Как правильно?
Отслеживать
12.5k 7 7 золотых знаков 18 18 серебряных знаков 48 48 бронзовых знаков
задан 23 фев 2021 в 12:42
1 1 1 серебряный знак 1 1 бронзовый знак
что такое с в вашей формуле?
23 фев 2021 в 12:48
А обязательно через эту формулу? Такое условие? В плане, есть много других вариантов, как можно найти день недели по дате, может, они Вам подойдут?
23 фев 2021 в 12:49
Во-первых вы потеряли из формулы остаток от деления на 7, а во-вторых там самое главное что означают эти буквы: en.wikipedia.org/wiki/…
23 фев 2021 в 13:07
И нужно приводить всегда исходные данные, для которых вы хотите получить какой-то результат, что мы должны подставить в формулу, чтобы воспроизвести ваш результат, какие значения?
23 фев 2021 в 13:09
25 фев 2021 в 9:16
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
День недели по дате в пайтоне лучше всего искать с помощью модуля datetime:
>>> from datetime import datetime >>> now = datetime.now() # текущие дата и время >>> now datetime.datetime(2021, 2, 23, 14, 46, 19, 60107) >>> datetime.weekday(now) # день недели в виде числа, понедельник - 0, воскресенье - 6 1 >>> datetime.isoweekday(now) # день недели в виде числа, понедельник - 1, воскресенье - 7 2
Методы объекта 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
Как в python получить текущую дату и время
datetime.fromtimestamp(timestamp) — дата из стандартного представления времени.
datetime.date() — объект даты (с отсечением времени).
datetime.time() — объект времени (с отсечением даты).
datetime.combine(date, time) — объект datetime из комбинации объектов date и time.
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) — возвращает новый объект datetime с изменёнными атрибутами.
datetime.weekday() — день недели в числовом формате, понедельник — 0, воскресенье — 6.
datetime.isoweekday() — день недели в числовом формате, понедельник — 1, воскресенье — 7.
datetime.strptime(date_string, format) — преобразует строку в datetime.
datetime.strftime(format) — преобразует datetime в строку в datetime.
Опции strftime из документации на модуль time
Получить день недели (цифрой) в python?
Подскажите каким методом получить день недели в виде числа, (понедельник — 1, воскресенье — 7) в Python 3.4
вызов datetime.isoweekday() дает ошибку:
import datetime >>> datetime.isoweekday() Traceback (most recent call last): File "", line 1, in datetime.isoweekday() AttributeError: 'module' object has no attribute 'isoweekday'
- Вопрос задан более трёх лет назад
- 9616 просмотров
1 комментарий
Оценить 1 комментарий
