我已经使用以下命令查找了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分钟前”命令减少时间,但无法获得给定时间的将来值。
答案 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