Unix/Linux 命令获取任何给定时间值的未来时间

Unix/Linux 命令获取任何给定时间值的未来时间

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

答案1

你的代码 dateinput=20181214202959 inputTime=$(echo $dateinput | sed 's,\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\),\1-\2-\3 \4:\5:,')

向 dateinput 添加间距以设置inputTime2018-12-14 20:59:39

然后,您将运行date --date="2018-12-14 20:59:59 30 minutes ago"请求特定的输出格式。

如果您从请求中删除 ,ago您将询问未来 30 分钟的时间。该词的作用ago是否定最近的时间偏移。一般来说,您可以列出多个时间偏移量,并将这些时间偏移量全部添加起来,因此您可以组合例如分钟数和周数。

$ date  --date="2018-12-14 20:00:00 30 minutes ago 1 week"
Fri Dec 21 19:30:00 PST 2018
$ date  --date="2018-12-14 20:00:00 30 minutes 1 week"
Fri Dec 21 20:30:00 PST 2018
$ date  --date="2018-12-14 20:00:00 30 minutes 1 week ago"
Fri Dec  7 20:30:00 PST 2018

相关内容