在unix shell脚本中从日期减去1小时

sha*_*kin 42 unix shell datetime

我在shell脚本中有以下内容.如何在保留格式的同时减去一个小时?

DATE=`date "+%m/%d/%Y -%H:%M:%S"`
Run Code Online (Sandbox Code Playgroud)

dog*_*ane 60

以下命令适用于最新版本的GNU date:

date -d '1 hour ago' "+%m/%d/%Y -%H:%M:%S"
Run Code Online (Sandbox Code Playgroud)


jm6*_*666 10

date -v-60M "+%m/%d/%Y -%H:%M:%S"

DATE=`date -v-60M "+%m/%d/%Y -%H:%M:%S"`
Run Code Online (Sandbox Code Playgroud)

如果你有bash版本,4.4+你可以使用bash的内部日期打印和算术:

printf "current date: %(%m/%d/%Y -%H:%M:%S)T\n"
printf "date - 60min: %(%m/%d/%Y -%H:%M:%S)T\n" $(( $(printf "%(%s)T") - 60 * 60 ))
Run Code Online (Sandbox Code Playgroud)

$(printf "%(%s)T")打印历元秒,$(( epoch - 60*60 ))是的bash-aritmetics -以秒减去1小时.打印:

current date: 04/20/2017 -18:14:31
date - 60min: 04/20/2017 -17:14:31
Run Code Online (Sandbox Code Playgroud)


小智 10

如果您需要减去时间戳:

timestamp=$(date +%s -d '1 hour ago');
Run Code Online (Sandbox Code Playgroud)


Phi*_*Lho 2

转换为时间戳(长整数),减去正确的毫秒数,重新格式化为您需要的格式。

由于您没有指定编程语言,因此很难提供更多详细信息......