Unix / Linux命令向数字字符串添加30分钟

时间:2018-12-18 17:39:31

标签: linux unix-timestamp

我已经使用以下命令查找了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

我的要求是从输入中获取日期,该输入将像YYYYMMDDhhmmss格式的20181214202959这样给出。这是我面临的问题。可以使用“ 30分钟前”命令减少时间,但无法获得给定时间的将来值。

2 个答案:

答案 0 :(得分:1)

使用+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

答案 1 :(得分:0)

这解决了我的问题。使用“ 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