День недели {0-7} в crontab имеет 8 вариантов, но у нас всего 7 дней в неделю


113

День недели: допустимый диапазон 0–7. Воскресенье - 0 или 7.

Я нашел это после Google, мой вопрос: почему оба значения (0,7) должны соответствовать воскресенью?


15
Я думаю, что логично думать, что некоторые страны начинают неделю с понедельника, а другие - с воскресенья, поэтому первое и последнее воскресенье решают это недоразумение, я думаю
Kiwy

10
Потому что воскресенье такой классный день, ты не согласен? : P
Алко

3
Потому что американцы считают воскресенье первым днем ​​недели, а европейцы говорят, что воскресенье - последний день недели.
Питер Б

9
Не забывай о Фундее.
MDMoore313

6
Потому что к седьмому дню Бог завершил Свою работу, которую Он совершил, и Он почил на седьмой день от всей Своей работы, которую Он совершил.
user84207

Ответы:


127

Это вопрос переносимости. В ранних Unices некоторые версии cron принимали 0 как воскресенье, а некоторые принимали 7 как воскресенье - этот формат является попыткой переносимости с обоими. От man 5 crontabв vixie-cron (выделение мое):

При указании дня недели воскресенье будет считаться как днем ​​0, так и днем ​​7. BSD и AT & T, похоже, не согласны по этому поводу.


41
Есть 10 видов людей, те, кто начинает считать с 0, и те, кто начинает с 1.
Хаген фон Айцен

34
@HagenvonEitzen Я помню шутку по-другому: есть 10 видов людей, тех, кто понимает двоичный код, и тех, кто не понимает. - Также: есть 2 вида людей: (1.) те, кто начинает считать с 1, (1.) те, кто начинает с 0.
leemes

7
У меня есть другая версия - в мире есть три типа людей - те, кто умеет считать, и те, кто не умеет.
Флурбиус

25
Или: есть два типа людей. Те, которые могут экстраполировать из неполных данных.
Бернхард

20
Или: в мире есть 10 типов людей - тех, кто понимает код Грея, тех, кто не понимает, и тех, кто ожидал шутку о двоичном коде.
OnoSendai

28

В дополнение к превосходному ответу @ ChrisDown, это также может быть изящным решением проблемы локализации : «Согласно еврейским календарям и традиционным христианским календарям, воскресенье - первый день недели». Наличие обоих способов, что очень просто программно, облегчает использование для любой группы.


Престижность, за вашу поддержку @ l0b0
Рубан

5
+1, хороший ответ. Я предполагаю, что это причина, по которой AT & T и BSD не согласились :-)
Крис Даун

:) надеюсь, хе-хе;)
Рубан Савви

1

Проще говоря, поле состоит из 3 двоичных битов, что дает от 000 до 111 или от 0 до 7. Таким образом, в 3-битном поле имеется всего восемь значений. Дополнительное значение приравнивается к первому, поэтому для удобства вы можете начать с 0 (воскресенье) или 1 (понедельник), увеличить его в 6 раз и охватить целую неделю.


-6

Из руководства:

день недели (0–7) (от 0 до 6 - от воскресенья до субботы или используйте имена; 7 - воскресенье, то же самое, что 0)


16
Как это добавляет новую информацию, о которой ОП, кажется, не знает?
Джозеф Р.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.