- 常见选项
-
--help:显示辅助信息
-
--version:显示date命令版本信息
-
-u:显示目前的格林威治时间
-
-d:做日期时间相关的运算
-
- - date = 'dateStr' :做时间的相关运算
-
- 显示系统当前日期时间
[root@hadoop ~]# date |
以指定格式显示日期时间
[root@hadoop ~]# date '+%Y-%m-%d %H:%M:%S' |
- 设置系统日期时间
[root@hadoop ~]# date -s "2017-01-01 01:01" [root@hadoop ~]# date --set="2017-01-01 01:01" |
- 有时候,我们操作日期时间,经常会要获取前几天或者后几天的时间,那么date命令也给我们提供了实现这个功能的可选项'-d'和'--date',请看下面细细的例子
先看'-d':
## 获取下一天的时间 [root@hadoop ~]# date -d next-day '+%Y-%m-%d %H:%M:%S' [root@hadoop ~]# date -d 'next day' '+%Y-%m-%d %H:%M:%S' 另外一种写法: [root@hadoop ~]# date '+%Y-%m-%d %H:%M:%S' -d tomorrow
## 获取上一天的时间 [root@hadoop ~]# date -d last-day '+%Y-%m-%d %H:%M:%S' 另外一种写法: [root@hadoop ~]# date '+%Y-%m-%d %H:%M:%S' -d yesterday
## 获取下一月的时间 [root@hadoop ~]# date -d next-month '+%Y-%m-%d %H:%M:%S'
## 获取上一月的时间 [root@hadoop ~]# date -d last-month '+%Y-%m-%d %H:%M:%S'
## 获取下一年的时间 [root@hadoop ~]# date -d next-year '+%Y-%m-%d %H:%M:%S'
## 获取上一年的时间 [root@hadoop ~]# date -d last-year '+%Y-%m-%d %H:%M:%S'
## 获取下一周的日期时间: [root@hadoop ~]# date -d next-week '+%Y-%m-%d %H:%M:%S' [root@hadoop ~]# date -d next-monday '+%Y-%m-%d %H:%M:%S' [root@hadoop ~]# date -d next-thursday '+%Y-%m-%d %H:%M:%S' |
上面的例子显示出来了使用的格式,使用精髓在于改变前面的字符串显示格式,改变数据,改变要操作的日期对应字段,除了天也有对应的其他实现:year,month,week,day,hour,minute,second,monday(星期,七天都可)
- date 能用来显示或设定系统的日期和时间,在显示方面,使用者能设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下:
使用范例:
[root@hadoop ~]# date '+%Y-%m-%d %H:%M:%S' |
日期方面:
%a : 星期几 (Sun..Sat) %A : 星期几 (Sunday..Saturday) %b : 月份 (Jan..Dec) %B : 月份 (January..December) %c : 直接显示日期和时间 %d : 日 (01..31) %D : 直接显示日期 (mm/dd/yy) %h : 同 %b %j : 一年中的第几天 (001..366) %m : 月份 (01..12) %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形) %w : 一周中的第几天 (0..6) %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形) %x : 直接显示日期 (mm/dd/yyyy) %y : 年份的最后两位数字 (00.99) %Y : 完整年份 (0000..9999) |
时间方面:
%%: 打印出% %n : 下一行 %t : 跳格 %H : 小时(00..23) %k : 小时(0..23) %l : 小时(1..12) %M : 分钟(00..59) %p : 显示本地AM或PM %P : 显示本地am或pm %r : 直接显示时间(12 小时制,格式为 hh:mm:ss [AP]M) %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00..61) %T : 直接显示时间(24小时制) %X : 相当于%H:%M:%S %p %Z : 显示时区 |
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss]
MM 为月份, DD 为日, hh 为小时, mm 为分钟, CC 为年份前两位数字, YY 为年份后两位数字, ss 为秒数
例子:date "050602032017.55" |
- 有用的小技巧
## 获取相对某个日期前后的日期: [root@hadoop ~]# date -d 'may 14 -2 weeks'
## 把时间当中无用的0去掉,比如:01:02:25会变成1:2:25 [root@hadoop ~]# date '+%-H:%-M:%-S'
## 显示文件最后被更改的时间 [root@hadoop ~]# date "+%Y-%m-%d %H:%M:%S" -r bin/removeJDK.sh
## 求两个字符串日期之间相隔的天数 [root@hadoop ~]# expr '(' $(date +%s -d "2016-08-08") - $(date +%s -d "2016-09-09") ')' / 86400 expr `expr $(date +%s -d "2016-08-08") - $(date +%s -d "2016-09-09")` / 86400 r ## shell中加减指定间隔单位 [root@hadoop ~]# A=`date +%Y-%m-%d` [root@hadoop ~]# B=`date +%Y-%m-%d -d "$A +48 hours"` |