2011-06-08 137 views
1

我想让日期+%m/%d/%Y得到不同的天数。shell脚本:用日期解析秒数

$(($(date +%s)- 259200))给我3天前的秒数。 -d参数不接受以我想要的格式解析它的秒05/06/2011(错误消息:date: invalid date '1307284916')。

有没有办法让date工作?

回答

3

要获得在Linux上的日期,接受一个简单的时间戳-d,用@符号前缀数量!

~% date +%s 
1307548153 
~% date -d @1307548153 
Wed Jun 8 16:49:13 IST 2011 
+0

那thx thx – webstrap 2011-06-08 16:23:23

0

在MacOS X上,您可以使用date -r 1307284916 +%m/%d/%Y来获得您想要的结果。如果你不在像MacOS X这样的BSD衍生系统上(例如,如果你使用的是Linux),似乎没有一个简单的date -r模拟器。传统版本的Unix通常甚至不提供GNU的date的设施。

如果你得到真正卡住了,联系我(见我的个人资料)的程序timestamp

$ timestamp -T '%m/%d/%Y' 1307284916 
1307284916 = 06/05/2011 
$ timestamp -n -T '%m/%d/%Y' 1307284916 
06/05/2011 
$ timestamp -T '%m/%d/%Y' 1307284916 $(($(date +%s)- 259200)) 
1307284916 = 06/05/2011 
1307288704 = 06/05/2011 
$ 
+0

Linux使用@来表示时间,所以你可以使用日期-d = @问它来显示这些系统。 – Petesh 2011-06-08 15:45:25

+0

@Petesh:这很有趣。我使用的是具有'date(GNU coreutils)5.97'和版权日期2006的陈旧(RHEL5)Linux;它不承认'@'符号。 – 2011-06-08 15:48:34

+0

在coreutils IIRC第6版中添加了@符号 – Petesh 2011-06-08 15:55:43