在 UNIX shell 脚本中从日期减去 1 小时
我在 shell 脚本中有以下内容。如何在保留格式的情况下减去一小时?
DATE=`date "+%m/%d/%Y -%H:%M:%S"`
I have the following in a shell script. How can I subtract one hour while retaining the formatting?
DATE=`date "+%m/%d/%Y -%H:%M:%S"`
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
以下命令适用于最新版本的 GNU
date
:The following command works on recent versions of GNU
date
:如果您有 bash 版本
4.4+
,您可以使用 bash 的内部日期打印和算术:$(printf "%(%s)T")
打印纪元秒,$(( epoch - 60*60 ))
是 bash-aritmetics - 以秒为单位减去 1 小时。印刷:If you have bash version
4.4+
you can use bash's internal date printing and arithmetics:The
$(printf "%(%s)T")
prints the epoch seconds, the$(( epoch - 60*60 ))
is bash-aritmetics - subtracting 1hour in seconds. Prints:如果您需要用时间戳减去:
if you need substract with timestamp :
但在 shell 中使用类似于
date +%Y-%m-%d-%H
,date -v-1H +%Y-%m-%d-%H
>But in shell use as like
date +%Y-%m-%d-%H
,date -v-1H +%Y-%m-%d-%H
这适用于我的 Ubuntu 16.04
date
:<代码>
日期 --date="@$(($(日期 +%s) - 3600))" "+%m/%d/%Y -%H:%M:%S"
date
版本是date (GNU coreutils) 8.25
This work on my Ubuntu 16.04
date
:date --date="@$(($(date +%s) - 3600))" "+%m/%d/%Y -%H:%M:%S"
And the
date
version isdate (GNU coreutils) 8.25
如果您也需要在使用新格式进行减法之前更改时区:
If you need change timezone before subtraction with new format too:
转换为时间戳(长整数),减去正确的毫秒数,重新格式化为您需要的格式。
由于您没有指定编程语言,因此很难提供更多详细信息......
Convert to timestamp (a long integer), subtract the right number of milliseconds, reformat to the format you need.
Hard to give more details since you don't specify a programming language...
这里还有另一种减去1小时的方法。
我希望它可以帮助某人。
Here another way to subtract 1 hour.
I hope that it can help someone.