我有一个格式
的字符串20110724T080000Z
我希望在Linux上的shell脚本中将其转换为本地时间。我认为我可以直接将其作为输入,但我似乎无法告诉日期输入日期的格式。
此
date -d "20110724T080000Z" -u
会让日期抱怨
date: invalid date `20110724T080000Z'
另外,表格“20110724T080000Z”的格式是什么?我试图谷歌获得它没什么成功。
答案 0 :(得分:3)
对于合并的日期和时间,ISO8601 "basic format"。 date
似乎无法解析20110724T080000Z
,但如果您准备进行一些字符串替换,则会正确解析20110724 08:00:00Z
。
答案 1 :(得分:1)
http://en.wikipedia.org/wiki/Date_(Unix)
此命令应该根据维基百科:
date [-u | --utc | --universal] [mmddHHMM [[cc] yy] [[。SS]]此表单唯一有效的选项指定协调世界时。
答案 2 :(得分:1)
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
。
答案 3 :(得分:0)
您可以尝试利用perl:
perl -e'print scalar localtime(shift),“\ n”'20110724T080000Z
虽然你可能需要稍微调整一下才能让它正常工作。好吧,我不知道为什么perl版本不能很好地完成它,但是这里有一个我试过的Ruby版本,虽然我不能很好地选择时间:
ruby -e“require'date'; print Date.strptime('20110724T080000Z','%Y%m%dT%H%M%SZ')。ctime”
给出:
Sun Jul 24 00:00:00 2011