如何在Linux上的Shell脚本中将UTC转换为本地时间

问题描述 投票:4回答:4

我有一个格式的字符串

20110724T080000Z

并且我想在Linux上的Shell脚本中将其转换为本地时间。我以为我可以输入日期作为输入,但是我似乎无法分辨输入日期的格式。

date -d "20110724T080000Z" -u

会抱怨日期

date: invalid date `20110724T080000Z'

而且,“ 20110724T080000Z”格式的格式是什么?我尝试使用Google收效甚微。

linux shell date utc
4个回答
4
投票

即合并日期和时间的ISO8601 "basic format"date似乎无法解析20110724T080000Z,但是如果您准备进行一些字符串替换,它将正确解析20110724 08:00:00Z


1
投票

称为祖鲁时间。它与UCT(以前称为GMT)相同。它与军方一起用于指定UCT,因此不会在通信上造成混淆。

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

此命令应根据维基百科使用:

日期[-u | --utc |-通用] [mmddHHMM [[cc] yy] [[。SS]]此格式的唯一有效选项是世界标准时间。


0
投票

您可以尝试使用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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.