Почему в Python weekday() отличается от tm wday в C?
Документация Python определяет datetime.weekday() какцелое число, где понедельник равен 0, а воскресенье-6 , в то время как C tm.tm_wday определяется какдней с воскресенья . Поэтому tm_wday есть (datetime.weekday() + 1) % 7, что весьма неудобно. Учитывая, что Python обычно держится близко к эквивалентам C, почему это было сделано таким образом?
1 ответ:
Это было явное решение Гвидо ван Россума, когда он впервые создал модуль
Нам придется догадаться, почему он это сделал. Скорее всего, Гвидо придерживался конвенцииISO 8601 для будни вместо конвенции c stdlib, возможно, потому, что он Европейский, где понедельник является преобладающим началом недели . Другой вариант заключается в том, что он моделировал поведение на совершенно другом языке; корни Python различны, и кроме ABC, C и C++ также включают Modula 3. Не то чтобы последний использовал эту конвенцию; он следует за c stdlib вместо. Обратите внимание, что он также использовал другой диапазон для значенияtimeдля Python версии 0.9.9; оригинальный commit не объясняет , почему он сделал этот выбор, но использование 0 означает, что Monday был частью Python с самого момента добавления функцийlocaltimeиgmtime. Смотрите:time_convert()функция в этой ранней редакции.tm_mon, от 1 до 12 вместо C соглашение stdlib об использовании от 0 до 11.Во всяком случае, вопрос о комп.яз..python в 2000 году о том, почему
time.gmtime()использует 0 для понедельника остался без ответа.
Comments