【图文解析 】shell操作日期时间

  • 常见选项
    • --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"`

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值