通過設(shè)置時區(qū)來計算N天之前日期的Shell小程序Windows系統(tǒng) -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【m.clearvueentertainment.com - 電腦資料】

    向曾經(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

最新文章