Когда я запускаю эту команду, я получаю то, что вы ожидаете:

date -d "2018-06-07 + 1 days"
Fri Jun  8 00:00:00 CEST 2018

К указанному дню добавляется 1 день (с использованием полуночи в качестве отправной точки).

Однако, когда я пытаюсь работать в одно время (17:00:00), происходят две вещи.

date -d "2018-06-07 17:00:00 + 28 days" 
  1. До 25 дней вывод неверный: неправильные даты / неправильное время (я запускал это в цикле).
  2. По истечении 25 дней он начинает выдавать «дата: недопустимая дата‘ 2018-06-07 17:00:00 +25 days ’»

На странице руководства говорится о -d / - date, что в значительной степени является свободным форматом. Но я начинаю думать, что знак плюса неправильно интерпретируется (может быть, как смещение часового пояса?), Когда вы используете время (часы: минуты: секунды)?

Итак, как я могу добавить дни ОТ даты с меткой времени?

1
Jan van den Berg 7 Июн 2018 в 15:10

1 ответ

Лучший ответ

Чтобы приращение по дням с меткой времени работало, метка времени должна быть в стандартном формате, возвращаемом по умолчанию командой date. Поэтому приведите дату в формат, в котором она принимает минутную арифметику, и выполните обработку.

date -d "2018-06-07 17:00:00"
Thu, Jun 07, 2018  5:00:00 PM

Теперь поместите его в переменную, например поместив вашу строку в пример ниже

dateStr=$(date -d "2018-06-07 17:00:00")
date -d "$dateStr + 28 days"

Возвращается

Thu, Jul 05, 2018  5:00:00 PM

В примере используются часовые пояса из IST.

1
Inian 7 Июн 2018 в 15:12