天天看點

shell下時間日期的加減乘除運算

首先我們先來說說什麼是shell下的時間戳:

自1970年1月1日(00:00:00 UTC/GMT)以來的秒數。它也被稱為Unix時間戳(Unix Timestam、Unix epoch、POSIX time、Unix timestamp)是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。

UNIX時間戳的0按照ISO 8601規範為:1970-01-01T00:00:00Z 一個小時表示為UNIX時間戳格式為:3600秒;一天表示為UNIX時間戳為86400秒,閏秒不計算。

shell下的時間加減法就是根據時間戳來實作的,時間戳對我們在shell下的操作非常的有用:

比如:計算某天的時間戳,也就是指定的某一個到1970年1月1日以來的秒數:

1

2

3

4

5

6

7

8

9

10

<code>//</code><code>從2014-12-05 19:45:44到1970-1-1總共的秒數</code>

<code>[root@node1 shell]</code><code># date -d "2014-12-05 19:45:44" +%s</code>

<code>1417779944</code>

<code>//</code><code>如果知道某個時間戳,也可以計算出這個時間戳對應的時間日期</code>

<code>[root@node1 shell]</code><code># date --date=@1417779944</code>

<code>Fri Dec  5 19:45:44 CST 2014</code>

<code>[root@node1 shell]</code><code># date -d @1417779944</code>

知道這些之後那我們就可以計算某一天距離今天過了多少天了:

<code>#!/bin/bash</code>

<code>#</code>

<code>first_stamp=`</code><code>date</code> <code>-d </code><code>"2014-12-05 19:45:44"</code> <code>+%s` </code><code>#計算指定日期的時間戳</code>

<code>today_stamp=`</code><code>date</code> <code>+%s`                          </code><code>#計算當天的時間戳</code>

<code>let</code> <code>day_stamp=($today_stamp - $first_stamp)     </code><code>#當天的時間戳減去指定的時間戳</code>

<code>let</code> <code>day=($day_stamp</code><code>/86400</code><code>)                      </code><code>#相差的時間戳除以一天的秒數就得到天數</code>

<code>echo</code> <code>$day</code>

以下還有一些時間的計算方法:

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<code>[root@node1 shell]</code><code># echo $(date --date='3 day')  //當天日期+3天</code>

<code>Fri Jan 16 11:55:02 CST 2015</code>

<code>[root@node1 shell]</code><code># </code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 day ago')  //當天日期-3天</code>

<code>Sat Jan 10 11:55:10 CST 2015</code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 month')  //當天日期+3月</code>

<code>Mon Apr 13 11:55:17 CST 2015</code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 month ago')  //當天日期-3朋</code>

<code>Mon Oct 13 11:55:25 CST 2014</code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 year')  //當天日期+3年</code>

<code>Sat Jan 13 11:55:32 CST 2018</code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 year ago')  //當天日期-3年</code>

<code>Fri Jan 13 11:55:38 CST 2012</code>

<code>[root@node1 shell]</code><code>#</code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 minute ')  //當天日期+3秒</code>

<code>Tue Jan 13 11:58:44 CST 2015</code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 minute ago')  //當天日期-3秒</code>

<code>Tue Jan 13 11:52:52 CST 2015</code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 hour ago')  //當天日期-3小時</code>

<code>Tue Jan 13 08:56:00 CST 2015</code>

<code>[root@node1 shell]</code><code># echo $(date --date='3 hour')  //當天日期+3小時</code>

<code>Tue Jan 13 14:56:06 CST 2015</code>

本文轉自 wei0164 51CTO部落格,原文連結:http://blog.51cto.com/tanxw/1602915,如需轉載請自行聯系原作者