我有一个格式的字符串
20110724T080000Z
并且我想在Linux上的Shell脚本中将其转换为本地时间。我以为我可以输入日期作为输入,但是我似乎无法分辨输入日期的格式。
此
date -d "20110724T080000Z" -u
会抱怨日期
date: invalid date `20110724T080000Z'
而且,“ 20110724T080000Z”格式的格式是什么?我尝试使用Google收效甚微。
即合并日期和时间的ISO8601 "basic format"。 date
似乎无法解析20110724T080000Z
,但是如果您准备进行一些字符串替换,它将正确解析20110724 08:00:00Z
。
称为祖鲁时间。它与UCT(以前称为GMT)相同。它与军方一起用于指定UCT,因此不会在通信上造成混淆。
http://en.wikipedia.org/wiki/Date_(Unix)
此命令应根据维基百科使用:
日期[-u | --utc |-通用] [mmddHHMM [[cc] yy] [[。SS]]此格式的唯一有效选项是世界标准时间。
您可以尝试使用perl:
perl -e'打印标量本地时间(shift),“ \ n”'20110724T080000Z
尽管您可能需要稍微调整一下才能使其正常工作。好的,我不知道为什么perl版本做得不好,但这是我尝试过的Ruby版本,尽管我不能很好地选择时间:
ruby -e“需要'date';打印Date.strptime('20110724T080000Z','%Y%m%dT%H%M%SZ')。ctime”
给予:
2011年7月24日,星期日00:00:00
date
程序识别yyyy-mm-ddTHH:MM:SS
(以及yyyy-mm-dd HH:MM:SS
),因此:
a=20110724T080000Z
b=${a:0:4}-${a:4:2}-${a:6:5}:${a:11:2}:${a:13:2}
date +%F_%T -d "${b} +0"
将在我的语言环境中打印2011-07-24_12:30:00
。