2016-10-01 4 views
3

У меня есть отметка времени, например 7:00:00, что означает 7 утра.Рассчитать 15 минут назад в оболочке

Я хотел бы написать короткую команду, которая возвращает 06:45:00 или просто 06:45, предпочтительно используя команду date, чтобы я мог избежать длинного сценария оболочки. У вас есть элегантное решение?

Я также ищу 24-часовой формат. Например, 12:00:00 - 15 минут = 11:45:00.

+1

Как вы хотите обрабатывать летнее время? Например: если временная метка «02: 05: 00', значит ли« 02: 50 »когда-либо действительный результат? – ruakh

ответ

5

С GNU date, использовать в качестве 7:00:00 AM - 15 minutesd (--date) строку:

% date -d '7:00:00 AM - 15 minutes' '+%H:%M' 
06:45 

+%H:%M устанавливает выходной формат, как HH:MM.

+0

@kensaii '% H' показывает 24-часовой отформатированный час, тест с' date -d '7:00:00 PM - 15 минут' '+% H:% M'' – heemayl

+0

спасибо. На самом деле, я знаю это, но я имею в виду, что входной файл составляет 24 часа. Как 18:00:00 вместо 18:00 вечера. Ваш код отлично подходит для PM, но я просто не могу работать с дневными часами. Благодарю за ваш ответ! – kensaii

1

В вариантах BSD Дата имеет флаг -v, который может использоваться для получения текущей метки времени и отображения результата положительной или отрицательной корректировки.

Это будет вычитать 15mins из текущей временной метки:

date -v -15M

Смежные вопросы