在我的脚本中,我将当前日期存储在一个变量中,但我希望该变量提前5分钟存储日期。
29/10/2014-10:47:06 to 29/10/2014-10:52:06
在Bash中有一种快速简单的方法可以做到这一点吗?例如,如果时间是10:59:00(识别进入下一个小时),则寻找一个也能正确工作的解决方案。
我找到了一些Perl解决方案,但没有找到Bash的解决方案。
您可以使用-d
选项:
$ date
mercredi 29 octobre 2014, 11:45:45 (UTC+0100)
$ date -d '5 mins'
mercredi 29 octobre 2014, 11:50:55 (UTC+0100)
如果你想使用一个变量:
$ curr=$(date +%d/%m/%Y-%H:%M:%S)
$ echo $curr
29/10/2014-11:59:50
$ date -d "($cur) +5mins" +%d/%m/%Y-%H:%M:%S
29/10/2014-12:04:54
您需要使用-d选项,其中包含任何用户定义的日期:
date -d '2014/10/29 10:58:06 5 minutes'
Wed Oct 29 11:03:06 IST 2014
当前日期
date -d '5 minutes'
看看date
:date +%s
给出自1970年1月1日起的秒数,加上5*60,然后使用date --date='@<newTime>'
。
参见bash中的man date
。
在Bash中,date
命令支持以下选项:
-a [-]sss.fff Slowly adjust the time by sss.fff seconds
(fff represents fractions of a second). This
adjustment can be positive or negative. The
system's clock is sped up or slowed down
until it has drifted by the number of
seconds specified. Only the super-user may
adjust the time.
因此,使用以下内容添加5分钟(=300秒):
date -a 300
如果以上选项不适用,您可以尝试以下操作:
根据";日期";(人工日期),您可以用"-v〃;选项后面跟着+/-{value}{y/m/w/d/H/M}
。
例如,以下命令将输出当前日期和当前日期+5分钟:
username@pc-name ~ % date
Sun Oct 23 13:03:06 EEST 2022
username@pc-name ~ % date -v +5M
Sun Oct 23 13:08:15 EEST 2022
您也可以将格式应用于编辑的日期:
username@pc-name ~ % date -v +5M +%Y-%m-%dT%H:%MZ
2022-10-23T13:08Z
以下是相关文档:
当设置值(而不是调整它们)时,秒在0-59之间,分钟在范围0-59,小时在范围0-23,月-天在1-31的范围内,星期天在范围内0-6(周日-周六),月份在1-12(1月-Dec)和年份在80-38或1980-2038的范围内。
如果val是数字,则y、m、w、d、H、m或必须使用S来指定日期的哪一部分以进行调整。
可以使用名称指定周、日或月而不是一个数字。如果名称与加(或减)号,日期会提前(或向后)到下一个(上一个)日期匹配给定的星期天或月份。这不会如果给定的星期日或月份为与当前版本相同。