Добавьте секунды к определенной дате в bash

У меня полная дата плюс часы и минуты. Я хотел бы добавить количество секунд и отобразить результат в виде даты «день.монт.год час: минута».

«дата», кажется, не может добавить секунды к определенной дате.

7
задан 13 August 2015 в 18:59

3 ответа

Фактически, команда GNU date (которая является стандартной реализацией в Ubuntu) может напрямую добавлять смещения даты - например, добавить 3662 секунды (1 час, 1 минута, 2 секунды) к данной дате

$ date '+%d.%b.%Y %T' --date="2012-06-13 09:16:16 EDT + 3662 seconds"
13.Jun.2012 10:17:18

Тем не менее, требуется некоторая осторожность с часовыми поясами и переходом на летнее время - более безопасный вариант, вероятно, состоит в том, чтобы преобразовать исходное время в секунды с начала эпохи и добавить к нему желаемое смещение до преобразования обратно в желаемый формат, например

$ secs=$(date +%s --date="2012-06-13 09:16:16")
$ date '+%d.%b.%Y %T' --date="@$((secs + 3662))"
13.Jun.2012 10:17:18
0
ответ дан 13 August 2015 в 18:59

Примерно так:

$ date +%x.%H:%M:%S:%N
01/21/2014_16:02:07:422856522

Это показывает данные в стиле США для меня, но см. man date для уточнения. 2 интересных варианта:

%N     nanoseconds (000000000..999999999)
%S     second (00..60)

И если вы хотите использовать стандартный год, месяц, формат дня:

$ date +%Y.%m.%d_%H:%M:%S:%N
2014.07.21_16:07:52:641771706
0
ответ дан 13 August 2015 в 18:59

Вы также можете легко увеличить текущую дату с помощью:

date --date="+1 seconds" '+%Y-%m-%d %T'

man date говорит, что это задокументировано в info date, но мне не хочется читать info руководства, чтобы процитировать ее : -)

Проверено в Ubuntu 18.04, date из Coreutils 8.28.

0
ответ дан 13 August 2015 в 18:59

Другие вопросы по тегам:

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