Linux系统date命令总结

前天在写shell脚本的时候,遇到时间计算的问题,搞明白之后想要些个总结;
date命令可以用来显示或设定系统的日期与时间,使用者设定想要显示的格式;
常用参数说明:

参数作用
-d显示所设定的时间
-s将系统时间设为指定的时间
-u显示目前的格林威治时间
–version显示版本号

一、显示
1.显示系统当前时间

[root@redhat_192.168.0.12 14:27:21 ~]#date
20190929日 星期日 14:27:24 CST

2.格式化显示系统当前时间

[root@redhat_192.168.0.12 14:27:24 ~]# date '+%Y-%m-%d %H:%M:%S'
2019-09-29 14:28:57

3.显示昨天时间

[root@redhat_192.168.0.12 14:28:57 ~]#date -d 'yesterday' '+%Y-%m-%d %H:%M:%S'
2019-09-28 14:29:45[root@redhat_192.168.0.12 14:29:45 ~]#date -d '-1 days' '+%Y-%m-%d %H:%M:%S'
2019-09-28 14:30:16

4.显示明天时间

[root@redhat_192.168.0.12 14:30:16 ~]#date -d 'tomorrow' '+%Y-%m-%d %H:%M:%S'
2019-09-30 14:31:19[root@redhat_192.168.0.12 14:31:19 ~]#date -d '1 days' '+%Y-%m-%d %H:%M:%S'
2019-09-30 14:31:43[root@redhat_192.168.0.12 14:31:43 ~]#date -d '+1 days' '+%Y-%m-%d %H:%M:%S'
2019-09-30 14:32:01

5.显示一个小时前的时间

[root@redhat_192.168.0.12 14:33:08 ~]#date -d '-1 hours' '+%Y-%m-%d %H:%M:%S'  
2019-09-29 13:33:56

6.显示一个小时后的时间

[root@redhat_192.168.0.12 14:33:56 ~]#date -d '1 hours' '+%Y-%m-%d %H:%M:%S'  
2019-09-29 15:34:33

7.显示一分钟前的时间

[root@redhat_192.168.0.12 14:35:02 ~]#date -d '-1 minutes' '+%Y-%m-%d %H:%M:%S'
2019-09-29 14:34:08

8显示一分钟后的时间

[root@redhat_192.168.0.12 14:35:08 ~]#date -d '1 minutes' '+%Y-%m-%d %H:%M:%S' 
2019-09-29 14:37:01

9.显示三小时前,一分钟之后的时间

[root@redhat_192.168.0.12 14:36:01 ~]#date -d '-3 hour 1 minute' '+%Y-%m-%d %H:%M:%S'  
2019-09-29 11:37:44

10.显示当前日期和所设定的时间

[root@redhat_192.168.0.12 14:40:44 ~]#date --date '12:34:56'
20190929日 星期日 12:34:56 CST
或
[root@redhat_192.168.0.12 14:42:29 ~]#date -d '12:34:56'    
20190929日 星期日 12:34:56 CST

二、修改当前系统的日期和时间
1.只修改日期

[root@redhat_192.168.0.12 14:43:28 ~]#date -s '20190708'
20190708日 星期一 00:00:00 CST

2.只修改时间

[root@redhat_192.168.0.12 00:00:00 ~]#date -s '20:14:45'
20190708日 星期一 20:14:45 CST

3.修改日期和时间

[root@redhat_192.168.0.12 20:14:45 ~]#date -s '2019-09-29 14:53:01'
20190929日 星期日 14:53:01 CST

补充:在修改日期的时候,20190929相当于2019-09-29

三、将时间转换为秒数
linux下时间是从1970.1.1开始算的秒数
1.将当前时间转换为秒数

[root@redhat_192.168.0.12 14:53:01 ~]#date +%s
1569740109

2.将指定的时间转换为秒数

[root@redhat_192.168.0.12 14:55:09 ~]#date +%s -d '2004/06/04 20:30:00'
1086352200

3.将指定的秒数转换为时间

[root@redhat_192.168.0.12 14:56:31 ~]#date -d @1569740109
20190929日 星期日 14:55:09 CST
或
[root@redhat_192.168.0.12 15:03:10 ~]#date -d @1569740109 +"%Y-%m-%d %H:%M:%S"
2019-09-29 14:55:09

四、时间计算
时间加减
1.计算时间加上n小时n分钟n秒
思路:将基础的时间转换为时间戳,然后将需要加上的时间转换为秒数,两者相加,再将相加后得到的结果转换为时间
实例:
计算:2019-09-29 23:50:10加上时间1小时59分钟30秒
计算过程:
a.将2019-09-29 23:50:10转换为时间戳,1小时59分钟30秒转换为秒数

[root@redhat_192.168.0.12 15:36:29 ~]#time1=($(date +%s -d '2019-09-29 23:50:10'))
[root@redhat_192.168.0.12 15:37:12 ~]#time2=$[1*3600+59*60+30]

b.将time1与time2的值相加

[root@redhat_192.168.0.12 15:41:22 ~]#time3=$[${time1}+${time2}]
[root@redhat_192.168.0.12 15:41:36 ~]#echo ${time3}
1569779380

c.将相加后所得的结果转换为时间

[root@redhat_192.168.0.12 15:43:09 ~]#date -d @1569779380 '+%Y-%m-%d %H:%M:%S'
2019-09-30 01:49:40
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值