向曾經(jīng)詢問如何通過調(diào)整時區(qū)獲得昨天日期的網(wǎng)友致歉, 我當時認為不可能,今天看老外的壇子,發(fā)現(xiàn)事實上是可以的,
通過設(shè)置時區(qū)來計算N天之前日期的Shell小程序Windows系統(tǒng)
。 一般系統(tǒng)安裝都是基于RTC時鐘的,所以方法應(yīng)當通用。 為了通用,我在老外的例子上做了一些改動,請各位需要的參考: [quote:2cdae2f838] #!/b向曾經(jīng)詢問如何通過調(diào)整時區(qū)獲得昨天日期的網(wǎng)友致歉,
我當時認為不可能,今天看老外的壇子,發(fā)現(xiàn)事實上是可以的。
一般系統(tǒng)安裝都是基于RTC時鐘的,所以方法應(yīng)當通用。
為了通用,我在老外的例子上做了一些改動,請各位需要的參考:
[quote:2cdae2f838]
#!/bin/sh
N=1 # N>0獲得多少天前的日期,N<0獲得多少天之后的日期
TZ=$TZ
TZ=`echo $TZ | awk -v nn=$N '{h=substr($1,1,3);
a=substr($1,4);b=a+24*nn;printf("%s%+d",h,b)}'`
export TZ
echo "TZ="$TZ "TIME="`date`
TZ=$OTZ;export TZ
[/quote:2cdae2f838]
xchen301 回復(fù)于:2004-10-26 15:27:22謝謝,收到!
順便問一句,老外的壇子能給地址嗎,呵呵
CNL 回復(fù)于:2004-10-26 15:32:43我經(jīng)常去這個老外壇子:
http://unix.derkeiler.com/Newsgroups/
xchen301 回復(fù)于:2004-10-26 15:43:30cnl,我有個疑問,這個shell是通過awk的printf來顯示日期格式,這樣把時間轉(zhuǎn)換吧??
CNL 回復(fù)于:2004-10-26 16:00:47printf是輸出日期差值所在的時區(qū)值
meteor06 回復(fù)于:2004-10-26 16:13:03的確用TZ 的方式取時間很方便
但是需要注意
1.最好不要在命令行執(zhí)行相關(guān)命令,會改變時間的,如果這時候運行了相關(guān)的應(yīng)用,會造成時間不對
2.北京是東八區(qū),取前一天時間
TZ=TZ+16就是前一天,
如果取TZ=TZ+24 會有問題,在早上八點前執(zhí)行,取到的是前天日期
CNL 回復(fù)于:2004-10-26 16:26:57對,不要在shell命令行上,使用要編寫個shell執(zhí)行
meter06老大說的CST+16,意思是北京時區(qū)CST-8中的-8+24=16
xchen301 回復(fù)于:2004-10-26 16:33:21[quote:6682e54a63="meteor06"]的確用TZ 的方式取時間很方便
但是需要注意
1.最好不要在命令行執(zhí)行相關(guān)命令,會改變時間的,如果這時候運行了相關(guān)的應(yīng)用,會造成時間不對
2.北京是東八區(qū),取前一天時間
TZ=TZ+16就是前一天,
如果取TZ=TZ+24 會..........[/quote:6682e54a63]
傳說中的大蝦出現(xiàn)了,呵呵,為什么取TZ=TZ+24會出問題?一定要早上8點嗎,這個跟時間有關(guān)系嗎,謝謝 :lol:
meteor06 回復(fù)于:2004-10-26 16:42:47[quote:2c96043967="xchen301"]
傳說中的大蝦出現(xiàn)了,呵呵,為什么取TZ=TZ+24會出問題?一定要早上8點嗎,這個跟時間有關(guān)系嗎,謝謝 :lol:[/quote:2c96043967]
北京是東八區(qū),也就是TZ-8,
TZ+24與格林威治時間相差24小時
2者的時間差一共是24+8=32個小時
hnpygqs 回復(fù)于:2004-10-26 17:07:31meter06老大你說的是-8+24=+16吧
北京是CST-8那么昨天就是CST(-8+24)=CST+16啦
CNL 回復(fù)于:2004-10-26 17:59:08是的,
CST+16表示時區(qū)代碼為CST(SCO標準中北京時區(qū)的簡稱),
+16代表虛擬的西16區(qū)(實際并不存在),和東8區(qū)(-8 )間隔早24小時就是昨天
依次類推CST+40代表虛擬的西40區(qū),和東8區(qū)(-8 )間隔早48小時(兩天)就是前天
xchen301 回復(fù)于:2004-10-26 18:52:39哦,明白了,謝謝各位。。
hnpygqs 回復(fù)于:2004-10-27 20:28:17不錯,不過通過時區(qū)設(shè)置有一個局限,不能計算超過1年間隔的日期的
裝個GNU的gdate吧,在shell里調(diào)gdate很方便算日期的
原文轉(zhuǎn)自:http://www.ltesting.net