Linux date命令

命令概述

date命令可以用来设置和显示系统当前时间,特别是在有一些Shell命令里面用到date命令来做日期的不同的显示,所以该命令也是非常需要掌握的一个命令。

 

语法

date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

1.命令参数:

-d, --date:显示由字符串描述的日期
-f, --file:显示DATEFILE文件中的每行时间
-r, --reference:显示文件的最后修改时间
-R, --rfc-2822: 以RFC2822格式输出日期和时间
-s, --set:设置时间
-u, --utc:输出或者设置协调的通用时间
--help:帮助信息 
--version版本信息

2.FORMAT

用于不同的时间格式显示方式

% H 小时(00..23):24小时制,01,02,03
% I 小时(01..12):12小时制,01,02,03
% k 小时(0..23):24小时制,1,2,3
% l 小时(1..12):12小时制,1,2,3
% M 分(00..59% p 显示出AM或PM
% r 时间(hh:mm:ss AM或PM),12小时
% s 从1970年1月1日00:00:00到目前经历的秒数
% S 秒(00..59% T 时间(24小时制)(hh:mm:ss)
% X 显示时间的格式(%H:%M:%S)
% Z 时区 日期域
% a 星期几的简称( Sun..Sat)
% A 星期几的全称( Sunday..Saturday)
% b 月的简称(Jan..Dec)
% B 月的全称(January..December)
% c 日期和时间( Mon Nov 8 141246 CST 1999% d 一个月的第几天(01..31% D 日期(mm/dd/yy)
% h 和%b选项相同
% j 一年的第几天(001..366% m 月(01..12% w 一个星期的第几天(0代表星期天)
% W 一年的第几个星期(00..53,星期一为第一天)
% x 显示日期的格式(mm/dd/yy)
% y 年的最后两个数字( 1999则是99)
% Y 年(例如:1970,1996等)
%Y   year
%z   +hhmm numeric timezone (e.g., -0400)
%:z  +hh:mm numeric timezone (e.g., -04:00)
%::z  +hh:mm:ss numeric time zone (e.g., -04:00:00)
%:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)
%Z   alphabetic time zone abbreviation (e.g., EDT)

3.示例

当前时间

#显示当前日期时间
date

 

显示两天前的时间

#显示两天前的时间
date -d "+2 days ago" 

以%Y-%m-%d %H:%M:%S格式显示当前时间

#以%Y-%m-%d %H:%M:%S格式显示当前时间
date "+%Y-%m-%d %H:%M:%S" 

以%Y-%m-%d %H:%M:%S格式显示两天前时间

#显示两天前的时间,并以%Y-%m-%d %H:%M:%S格式输出
date -d "+2 days ago" "+%Y-%m-%d %H:%M:%S"

在date命令中如果要指定其他的时间是变量,那么时间必须要用双引号否则会报错,如果直接是时间值那么可以单引号,但是建议shell里面都使用双引号

#!/bin/bash
adate=`date`
var=`date --date="$adate" +'%H:%M'`
echo $var

 

 

其它方式

#两天后
date -d "-2 days ago" +%Y%m%d
#一星期前
date -d "1 week ago" +%Y%m%d
#一星期后
date -d "-1 week ago" +%Y%m%d
#一个月前
date -d "1 month ago" +%Y%m%d
#一个月后
date -d "-1 month ago" +%Y%m%d
#一年前
date -d "1 year ago" +%Y%m%d
#下一天
date -d next-day +%Y%m%d
#前一天
date -d last-day +%Y%m%d
#前天
date -d yesterday +%Y%m%d
#明天
date -d tomorrow +%Y%m%d
#上个月
date -d last-month +%Y%m%d
#下个月
date -d next-month +%Y%m%d
#去年
date -d last-year +%Y%m%d
#明年
date -d next-year +%Y%m%d

小时(hour),分钟(minute),秒(second)的实现方法同上

 

4.修改系统日期和时间

只修改日期,输入:date -s 2016-03-30

只修改时间,输入:date -s 21:00:00

同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:

date -s "2016-03-30 21:00:00"

修改完后,把系统时间写入CMOS,硬件时钟,以免重启后失效,输入:

clock -w

 

date命令的使用技巧

--如果指定的时间是变量得必须使用双引号
var=`date --date="$2" +"%H:%M"`

--如果同时指定变量和时间增量值那么两个应该放在一个双引号里面
cdate=`date -d "+10 minute $2" +%H:%M`

 

总结

date命令的使用技巧还有很多,这里也没有全部罗列,在shell命令里面比如做日期文件的时候经常会用到该命令,所以还需要熟练掌握。

 

 

 

备注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

 

posted @ 2016-03-30 20:12  pursuer.chen  阅读(2031)  评论(1编辑  收藏  举报