Есть ли ошибка в дате GNU? (расчет смещений) - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь сгруппировать записи файла журнала по неделям и с помощью даты GNU найти смещения отметок времени для сравнения с записями журнала:

$ date --version
date (GNU coreutils) 8.25

$ today=$(date +%F)
$ ts_sow=$(date -d "$today - $(( $(date -d $today +%u) - 1) days" +%F)

Это дает дату для понедельника текущей недели.

$ echo $today
2018-11-15
$ echo $ts_sow
2018-11-12

Теперь, когда я хочу вернуться к предыдущей неделе, я могу сместить с начала текущей недели на 7 дней ...

$ ts_sopw=$(date -d "$ts_sow - 7 days" +%F)
$ echo $ts_sopw
2018.11-05

Но если я попытаюсь применить оба смещения к исходной дате начала, это даст неверный результат ...

$ ts_sopw=$(date -d "$today - $(( $(date -d $today +%u) - 1 - 7 )) days" +$F)
$ echo $ts_sopw
2018-11-11

Это ошибка, или здесь происходит нечто большее, чего я не понимаю?

1 Ответ

0 голосов
/ 17 ноября 2018

С арифметикой правильная я могу получить правильный результат:

$ ts_sopw=$(date -d "$today - $(( $(date -d $today +%u) - 1 + 7 )) days" +$F)
$ echo $ts_sopw
2018-11-05

Я был ошибкой!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...