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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章