2010-01-08 43 views
7

我有一個shell腳本,我想在格林尼治標準時間30分鐘前獲取日期和時間。unix shell腳本在格林威治標準時間30分鐘前取得日期

我有這個偉大的工作,完全小時,但部分時間似乎不工作:

1小時前

TZ = GMT + 1個日期+%Y-%間%d」 「%H:%M:%S 2010-01-08 17時43分57秒

2小時前

TZ = GMT + 2日期+%Y-%間 - %d」,「%H :%M:%S 2010-01-08 16:44:07

1/2小時前

TZ = GMT + 0.5日期+%Y-%間 - %d」,「%H:%M:%S 2010-01-08 18時44分38秒

嘗試了很多0.5 1.5的組合,似乎沒有部分時間工作,這很奇怪,因爲有一些時區沒有完全抵消一小時。

有什麼建議嗎?

無法使用Perl或紅寶石需要正常的shell或mysql調用。

回答

13

日期-u --date = 「 - 30分鐘」

+4

如果你是在OS X上的等效選項是:日期-u -v-30M – Max 2010-01-08 18:56:49

+0

感謝,將是理想的,如果我有一個在兩個工作linux centos和osx,但我現在可以使用2個版本。 – Joelio 2010-01-08 19:09:13

+0

除了「-30分鐘」之外,您可以說「30分鐘前」,它完全符合您問題的這一部分。 – camh 2010-01-10 01:51:28

1
/usr/bin/env TZ='GMT' date -d '-30 minutes' 

這是date命令是這樣的GNU的coreutils的一部分的版本。我不知道它是否適用於其他版本的date程序。

+0

這一個沒有在我的osx或centos上工作。 – Joelio 2010-01-08 19:08:41

+0

你能發佈錯誤嗎? – 2010-01-08 19:12:17

8

你也可以這樣做:

TZ='UTC+0:30' date 
+0

適用於Mac OS X和Ubuntu。 – trashgod 2010-01-09 09:48:26

+0

這是正確的應該是+0:30轉移其他方式 – alexsergeyev 2013-04-12 16:20:54

+1

@alexsergeyev:感謝您的更正。 – 2013-04-12 19:07:27

相關問題