天天看點

date

。 時間加減

這裡處理方法,是将基礎的時間轉變為時間戳,然後,需要增加或者改變時間,變成 秒。

如:1990-01-01 01:01:01 加上 1小時 20分

處理方法:

a.将基礎時間轉為時間戳

time1=$(date +%s -d '1990-01-01 01:01:01')

echo $time1

631126861 【時間戳】

b.将增加時間變成秒

[root@localhost ~]# time2=$((1*60*60+20*60))

[root@localhost ~]# echo $time2

4800

c.兩個時間相加,計算出結果時間

time1=$(($time1+$time2))

time1=$(date +%Y-%m-%d\ %H:%M:%S -d "1970-01-01 UTC $time1 seconds");

1990-01-01 02:21:01

2。時間差計算方法

如:2010-01-01 與 2009-01-01 11:11:11 時間差

原理:同樣轉成時間戳,然後計算天,時,分,秒

time1=$(($(date +%s -d '2010-01-01') - $(date +%s -d '2009-01-01 11:11:11')));

echo time1

将time1 / 60 秒,就變成分了。

補充說明:

shell 單括号運算符号:

a=$(date);

等同于:a=`date`;

雙括号運算符:

a=$((1+2));

echo $a;

等同于:

a=`expr 1 + 2`

-d, –date=STRING  顯示STRING指定的時間

-f, –file=DATEFILE 類似–date參數顯示DATEFILE檔案中的每行時間

-ITIMESPEC, –iso-8601[=TIMESPEC]  以ISO 8601 格式顯示日期/時間。

 TIMESPEC為”date”(隻顯示日期)、”hours”、”minutes”、”senconds”(顯示時間精度)之一,

 預設為”date”。

-r, –reference=FILE  顯示檔案的最後修改時間

-R, –rfc-2822  以RFC-2822相容日期格式顯示時間

-s, –set=STRING  設定時間為STRING

-u, –utc, –universal  顯示或設定為CoordinatedUniversal Time時間格式

date正常輸出:

[root@root ~]# date "+%Y-%m-%d"  

2013-02-19  

[root@root ~]# date "+%H:%M:%S"  

13:13:59  

[root@root ~]# date "+%Y-%m-%d %H:%M:%S"  

2013-02-19 13:14:19  

[root@root ~]# date "+%Y_%m_%d %H:%M:%S"    

2013_02_19 13:14:58  

[root@root ~]# date -d today   

Tue Feb 19 13:10:38 CST 2013  

[root@root ~]# date -d now  

Tue Feb 19 13:10:43 CST 2013  

[root@root ~]# date -d tomorrow  

Wed Feb 20 13:11:06 CST 2013  

[root@root ~]# date -d yesterday  

Mon Feb 18 13:11:58 CST 2013  

date詳細用法

date 用法: date [OPTION]... [+FORMAT]

date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

date 可以用來顯示或設定系統的日期與時間。

1.顯示方面

使用者可以設定欲顯示的格式,格式設定為一個加号後接數個标記,其中可用的标記清單如下: % :列印出 %

%n : 下一行

%t : 跳格

%H : 小時(00-23)

%I : 小時(01-12)

%k : 小時(0-23)

%l : 小時(1-12)

%M : 分鐘(00-59)

%p : 顯示本地 AM 或 PM

%r : 直接顯示時間 (12 小時制,格式為 hh:mm:ss [AP]M)

%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前為止的秒數

%S : 秒(00-60)

%T : 直接顯示時間 (24 小時制)

%X : 相當于 %H:%M:%S

%Z : 顯示時區 %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/yy)

%y : 年份的最後兩位數字 (00-99)

%Y : 完整年份 (0000-9999)

2.設定時間方面

date -s//設定目前時間,隻有root權限才能設定,其他隻能檢視。

date -s 20080523//設定成20080523,這樣會把具體時間設定成空00:00:00

date -s01:01:01//設定具體時間,不會對日期做更改

date -s “01:01:01 2008-05-23″//這樣可以設定全部時間

date -s“01:01:01 20080523″//這樣可以設定全部時間

date -s “2008-05-23 01:01:01″//這樣可以設定全部時間

date -s“20080523 01:01:01″//這樣可以設定全部時間

3.加減

date+%Y%m%d     //顯示前天年月日

date+%Y%m%d --date="+1 day" //顯示前一天的日期

date +%Y%m%d--date="-1 day"  //顯示後一天的日期

date +%Y%m%d --date="-1 month" //顯示上一月的日期

date +%Y%m%d--date="+1 month"  //顯示下一月的日期

date +%Y%m%d --date="-1 year" //顯示前一年的日期

date +%Y%m%d--date="+1 year"  //顯示下一年的日期

4.時間設定

一般使用“date -s”指令來修改系統時間

比如将系統時間設定成2011年7月13日的指令:date -s 07/13/2011

将系統時間設定成11點12分0秒的指令:date -s 11:12:00

注意:這裡說的是系統時間,是linux由作業系統維護的。

在系統啟動時,Linux作業系統将時間從CMOS中讀到系統時間變量中,以後修改時間通過修改系統時間實作。為了保持系統時間與CMOS時間的一緻性,Linux每隔一段時間會将系統時間寫入CMOS。由于該同步是每隔一段時間(大約是11分鐘)進行的,在我們執行date-s後,如果馬上重起機器,修改時間就有可能沒有被寫入CMOS,這就是問題的原因。

如果要確定修改生效可以執行如下指令。

#clock –w

這個指令強制把系統時間寫入CMOS。

本文轉自 遠永201314 51CTO部落格,原文連結:http://blog.51cto.com/7336056/1877515