Команда Unix / Linux для добавления 30 минут к числовой строке - PullRequest
0 голосов
/ 18 декабря 2018

Я использовал приведенные ниже команды, чтобы найти более старое время на 30 минут, но не смог сформировать команды для добавления 30 минут.

Пример структуры ввода.

dateinput=20181214202959
inputTime=$(echo $dateinput | sed 's,\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\),\1-\2-\3 \4:\5:,')
param2=`date '+%Y%m%d%H%M%S' --date="$inputTime 30 minutes ago"`
echo $param2
20181214195959

Пожалуйста, дайте мнезнать шаги, чтобы добавить 30 минут, аналогичные приведенным выше.Для примера ввода даты, указанного выше, желаемое значение равно 20181214205959.

Редактировать:

С помощью команды прямой даты я могу добавлять и уменьшать в соответствии с приведенными ниже требованиями:

$date
Tue Dec 18 20:49:06 PST 2018
$date --date "-30 minutes"
Tue Dec 18 20:18:55 PST 2018
$date --date "+30 minutes"
Tue Dec 18 21:19:01 PST 2018

Мое требование - получить дату из входных данных, которая будет указана в виде 20181214202959, в формате ГГГГММДДччммсс.Это где я сталкиваюсь с проблемами.Возможность сократить время с помощью команды «30 минут назад», но не может получить будущее значение для данного времени.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Это решило мою проблему.используйте «30 минут назад», чтобы получить предыдущее значение, и просто «30 минут», чтобы получить будущее значение.

$dateinput=20181214202959
$inputTime=$(echo $dateinput | sed 's,\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\),\1-\2-\3 \4:\5:,')
$param2=`date '+%Y%m%d%H%M%S' --date="$inputTime 30 minutes ago"`
$echo $param2
20181214195959
$param3=`date '+%Y%m%d%H%M%S' --date="$inputTime 30 minutes"`
echo $param3
20181214205959
0 голосов
/ 18 декабря 2018

Используйте +30 minutes, например:

$ date
Tue Dec 18 17:48:22 GMT 2018
$ date --date "-30 minutes"
Tue Dec 18 17:18:26 GMT 2018
$ date --date "+30 minutes"
Tue Dec 18 18:18:32 GMT 2018
...