。 時間加減
這裡處理方法,是将基礎的時間轉變為時間戳,然後,需要增加或者改變時間,變成 秒。
如: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正常輸出:
[python] view plaincopy
- [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" //顯示下一月的日期
- +%Y%m%d --date="-1 year" //顯示前一年的日期
- +%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,這就是問題的原因。
如果要確定修改生效可以執行如下指令。