Когда я пытаюсь получить номер недели для 31 декабря, он возвращает 1. Когда я получаю номер недели для 30 декабря, я получаю 52 --- что я и ожидал. День понедельник правильный. Это на RPI под управлением Ubuntu.
$ date -d "2018-12-30T1:58:55" +"%V%a"
52Sun
$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
Та же проблема без строки времени
$ date -d "2018-12-31" +"%V%a"
01Mon
linux
command-line
date
Джордж Шафер
источник
источник
date
она указана?Ответы:
Это дает вам неделю ISO, которая начинается в понедельник.
Если вы хотите показать 12/31 как 52-ю неделю, вы должны использовать
%U
, который не использует стандарт ISO:источник
Определение номера недели в Европе и США разное, вероятно, стандарты ISO и ANSI. Это может быть связано с тем, что неделя - воскресенье - суббота или понедельник - воскресенье, и это опять же может быть связано с еврейским и христианским определением Дня Господня (суббота против воскресенья).
Для Европы неделя № 1 содержит первый четверг января и, таким образом, содержит минимум 4 дня (т.е. большинство), относящихся к новому году (чт-пт-сб-вс).
В любом случае, в такие годы, когда ВСЕ (!!) номера недели в Европе и США различаются на +/- 1, это доставляет большое удовольствие при настройке расписаний в многонациональных компаниях. :-)
источник