首先我們先來說說什麼是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,如需轉載請自行聯系原作者