【问题标题】:Unix / Linux command to add 30 mins to the numeric stringUnix / Linux 命令将 30 分钟添加到数字字符串
【发布时间】:2018-12-18 17:39:30
【问题描述】:

我已使用以下命令查找 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 分钟的步骤,类似于上述步骤。对于上面给出的示例 dateinput,所需的输出是 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 分钟前”命令减少时间,但无法获得给定时间的未来值。

【问题讨论】:

  • 您的param2 反引号未关闭。
  • 这是一个错字,感谢您的通知。现在更正了。减去时间但增加时不会遇到任何问题。

标签: linux unix-timestamp


【解决方案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

【讨论】:

  • 没用。早些时候尝试过,收到错误消息,提示不是所需的日期格式。
  • @SekarRamu 在没有$inputTime 和格式的情况下尝试一下。
  • 使用标准日期命令,即使我能够得到它,但在这里我必须从我得到的输入中获取日期,并且到那个日期我已经添加了 30 分钟。在向该输入日期传递 +30 分钟时,我遇到了问题。您能否告诉我如何将 30 分钟添加到我在问题中提到的那种输入?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 2013-01-30
    • 2021-01-04
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多