date用法

日常工作中经常使用date这个命令,几乎所有与日期时间相关的操作都会跟这个命令扯上点关系。简单写几条经常使用到的date命令,仅供大家参考。

首先检查一下date的版本,注意如果你用的不是GNU date,那么以下的命令不保证成功。

date --version
date (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie.

先看看最简单的一个,没啥好解释的。

date 
Tue Nov  6 13:43:00 CST 2012
 
格式化输出,
%F是按照YYYY-YY-DD的格式显示当前日期
%D是按照MM/DD/YY的格式显示当前日期。
类似%F/D的参数是什么意思,man date都能找到
1 date +%F 
2 2012-11-06 
3 
4 date +%D 
5 11/06/12

 

有很多需求都是计算N天前/后,N月前/后,甚至是N年。。。。。。那么下边的操作应该比较合适

#计算3天前的日期 
date +%D -d '-3 days' 
11/03/12

 

1 #计算3天后的日期 
2 date +%D -d '+3 days' 
3 11/09/12

 

1 #计算3天后的日期,写不写+都一个效果,跟上边结果一样 
2 date +%D -d '3 days' 
3 11/09/12

 

#计算1个月前的日期 
date +%F -d '-1 month' 
2012-10-06

 

#计算1年前的日期 
date +%F -d '-1 year' 
2011-11-06

 

再来看看相关时间的操作,有了刚才上边对日期操作的理解,看这个时间相比不难。E文单词不懂的去问translate.google.com.hk ^_^

获取当前时间 
date +%T 
13:48:25

获取1小时前的时间 
date +%T -d '-1 hours' 
12:48:27

获取10分钟前的时间 
date +%T -d '-10 minutes' 
13:38:35

获取3小时后的时间 
date +%T -d '3 hours' 
16:49:08

 

有关时间戳的处理,时间戳的基准是1970年1月1日0点0分0秒,注意这可是格林尼治天文台的时间,不是北京时间啊。

1 显示系统当前的时间戳 
2 date +%s 
3 1352183334
4 
5 把某时间戳转换回日期格式 
6 date -d "@1352183334" 
7 Tue Nov  6 14:28:54 CST 2012

 

 

 
看到了吧,因为现在这个系统是东8区的时区,所以0时间戳时候,这系统应该已经是1970年1月1日早上8点了
date -d "@0"
Thu Jan  1 08:00:00 CST 1970

再来个计算任意日期的前N日或后N日如何操作

DAY="20000101" 
echo $DAY 20000101 

date +%F -d "$DAY 1 day" 
2000-01-02 

date +%F -d "$DAY -1 day" 
1999-12-31

 

计算两个日期相差天数,比如2012年11月1日和2010年5月1日,相差多少天呢?

d1=$(date +%s -d 20121101) 
d2=$(date +%s -d 20100501) 
echo $(((d1-d2)/86400)) 
915

 

posted @ 2015-08-18 22:05  Tcool  阅读(693)  评论(0编辑  收藏  举报