2011-05-09 176 views

回答

2

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

很难给出更多的细节,因为你没有指定的编程语言...

+0

啊..我用shell脚本,我的公式是这样的 - 日期='日期“+%m /%d /%Y - %H:%M:%S”'从DATE我想减去1小时 – 2011-05-09 08:32:11

+1

您是否需要留在shel L·内联的awk或perl脚本可以轻松地减去一小时,并以您需要的格式输出。 – CoreyStup 2011-05-09 20:38:12

30

上最新版本的GNU date的下面的命令作品:

date -d '1 hour ago' "+%m/%d/%Y -%H:%M:%S" 
+0

i recieve -date:illegal option - d usage:date [-u] mmddHHMM [[cc] yy] [.SS] date [-u] [+ format] date -a [ - ] sss [ fff] – 2011-05-09 08:40:41

+0

@shamir这意味着您的日期版本不支持此选项。 – dogbane 2011-05-09 08:41:20

+0

我想出来 - 我发布它,因为可能你知道一些其他方式在solaris机器上做到这一点? – 2011-05-09 09:16:56

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

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

如果你有庆典版本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)) 

$(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 
+0

是的,我的操作系统不支持它,谢谢任何方式 – 2011-05-11 05:30:16

+0

这不适用于Ubuntu上的'date'。 – Flimm 2016-06-15 16:10:32

+0

@Flimm这适用于OS X,我也期待BSD – 2016-10-14 01:04:59

4

,如果你需要的时间戳。减去:

timestamp=$(date +%s -d '1 hour ago'); 
1

这项工作在我的Ubuntu 16.04 date date --date="@$(($(date +%s) - 3600))" "+%m/%d/%Y -%H:%M:%S" date版本date (GNU coreutils) 8.25