2011-07-22 5 views
4

にシェルスクリプトで現地時間にUTCを変換するにはどうすればフォーマットは、Linux

20110724T080000Z 

の文字列を持っていると私は、Linux上でシェルスクリプトでローカル時間にそれを変換したいです。私はそれを単に日付として入力できると思っていましたが、私の入力日付がどのような形式になっているかを日付で伝えることはできないようです。

この

date -d "20110724T080000Z" -u 

は日付が

また
date: invalid date `20110724T080000Z' 

、フォーム "20110724T080000Z" の形式何と呼ばれて文句を言うになるだろうか?私はそれをGoogleにしようとほとんど成功していない。

+0

[rfc 3339](http://tools.ietf.org/html/rfc3339)形式が句読記号から削除されたようです。 – viraptor

答えて

3

合計の日付と時刻は、ISO8601 "basic format"です。 date20110724T080000Zを解析できないようですが、いくつかの文字列の置換を行う準備ができていれば、20110724 08:00:00Zを正しく解析します。

0

あなたはperlのを利用してみてください:

のperl -e '印刷スカラーのlocaltime(シフト)、 "\ n" は' 20110724T080000Z

uがこの小さなを微調整する必要があるかもしれないがそれが正しく動作するようにします。確かに、Perlのバージョンがうまくいかない理由はわかりませんが、ここでは試したRubyのバージョンがあります。

ruby​​ -e " '日付' を必要とする。Date.strptimeを印刷( '20110724T080000Z'、 '%のY%のm個%のdT%のH%のMの%のSZ')をCTIME" を

が与える:

太陽7月24日00:00:00 2011

+1

'Fri Aug 21 20:18:44 1970' - 私には見えない – Kimvais

1

という名前のズールー時間。これはGMTと呼ばれていたUCTと同じです。 UCTを指定するために軍隊に使用されているので、対応に混乱はありません。

http://en.wikipedia.org/wiki/Date_(Unix

このコマンドは、ウィキペディアによると動作するはずです:

日[-u | --utc | --universal] [MMDDHHMM [[CC] YY] [[SS]]。この形式の有効なオプションのみが協定世界時を指定します。