Команда дата дает неправильный номер недели на 31 декабря

"Другие админы" злонамеренные? Они хотят тебя схватить? Если да, то, вероятно, вы ничего не можете сделать.

В противном случае, возможно, самым простым решением является изменение сценария , чтобы поместить файл в ваш домашний каталог. Одним из вариантов является создание жестких ссылок на файл в разных каталогах; пока они не удаляют (не отменяют связь) все ссылки, файл останется нетронутым. (Вам следует написать другой сценарий, чтобы просмотреть все местоположения ссылок, найти тот, который все еще существует, , а затем повторно связать все те, которые были удалены .) Помните, что некоторые редакторы разрывают ссылки (например, если вы редактируете файл).

Это может решить проблему, даже если «другие администраторы» действуют злонамеренно и / или хотят вас, если они неопытны и недостаточно тщательны.

Или сделайте файл неизменяемым и измените сценарий, чтобы использовать другой тест , чтобы определить, отправлять ли электронные письма.

21
15.11.2018, 22:24
2 ответа

Это дает вам неделю ISO, которая начинается в понедельник.

The ISO week date system is effectively a leap week calendar system that is part of the ISO 8601 date and time standard issued by the International Organization for Standardization (ISO) since 1988 (last revised in 2004) and, before that, it was defined in ISO (R) 2015 since 1971. It is used (mainly) in government and business for fiscal years, as well as in timekeeping. This was previously known as "Industrial date coding". The system specifies a week year atop the Gregorian calendar by defining a notation for ordinal weeks of the year.


An ISO week-numbering year (also called ISO year informally) has 52 or 53 full weeks. That is 364 or 371 days instead of the usual 365 or 366 days. The extra week is sometimes referred to as a leap week, although ISO 8601 does not use this term.

Weeks start with Monday. Each week's year is the Gregorian year in which the Thursday falls. The first week of the year, hence, always contains 4 January. ISO week year numbering therefore slightly deviates from the Gregorian for some days close to 1 January.


Если вы хотите показать 31 декабря как неделю 52, вы должны использовать %U, который не использует стандарт ISO:

$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
$ date -d "2018-12-31T1:58:55" +"%U%a"
52Mon
49
27.01.2020, 19:43

Определение номера недели в Европе и США различается, вероятно, в соответствии со стандартами ISO и ANSI. Это может быть связано с тем, что неделя является воскресеньем --субботой или понедельником --воскресеньем, и это снова может быть связано с еврейским и христианским определением Дня Господня (суббота против воскресенья ).

Для Европы неделя номер 1 содержит первый четверг января и, таким образом, содержит как минимум 4 дня (, т.е. большинство )относятся к новому году (Чт -Пт -Сб -Вс ).

Во всяком случае, в такие годы, когда ВСЕ (!! )номера недель отличаются на +/ -1 между Европой и США, что доставляет большое удовольствие при настройке расписаний в -национальных компаниях.:-)

3
27.01.2020, 19:43

Теги

Похожие вопросы