У меня полная дата плюс часы и минуты. Я хотел бы добавить количество секунд и отобразить результат в виде даты «день.монт.год час: минута».
«дата», кажется, не может добавить секунды к определенной дате.
Фактически, команда 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
Примерно так:
$ 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
Вы также можете легко увеличить текущую дату с помощью:
date --date="+1 seconds" '+%Y-%m-%d %T'
man date
говорит, что это задокументировано в info date
, но мне не хочется читать info
руководства, чтобы процитировать ее : -)
Проверено в Ubuntu 18.04, date
из Coreutils 8.28.