如何将UTC转换为Linux上的shell脚本的本地时间

我有一个格式的string

20110724T080000Z 

我想在Linux上的shell脚本中将其转换为本地时间。 我以为我只是可以把它作为inputdate,但我似乎不能告诉date我的inputdate有什么格式。

这个

 date -d "20110724T080000Z" -u 

会让date抱怨

 date: invalid date `20110724T080000Z' 

另外,forms为“20110724T080000Z”的格式是什么? 试图谷歌,我没有成功。

这是合并日期和时间的ISO8601“基本格式” 。 date似乎不能解析20110724T080000Z ,但如果你准备做几个字符串替换,它正确地解析20110724 08:00:00Z

它被称为祖鲁时间。 它和UCT一样,曾经被称为GMT。 它与军方一起使用来指定UCT,因此不存在相应的混淆。

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

这个命令应该根据维基百科工作:

日期[-u | –utc | –universal] [mmddHHMM [[cc] yy] [[。SS]]此表单的唯一有效选项指定协调世界时。

你可以尝试利用perl:

perl -e'打印标量localtime(shift),“\ n”'20110724T080000Z

虽然你可能需要调整这一点,以使其正常工作。 好吧,我不知道为什么perl版本不好,但是这里是我尝试过的一个Ruby版本,尽管我不能很好的选择时间:

ruby -e“require'date';打印Date.strptime('20110724T080000Z','%Y%m%dT%H%M%SZ')。ctime”

得到:

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