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

发布于 2024-11-25 08:53:29 字数 338 浏览 0 评论 0原文

我有一个格式的字符串

20110724T080000Z

,我想在 Linux 上的 shell 脚本中将其转换为本地时间。我以为我可以将其作为迄今为止的输入,但我似乎无法告诉日期我输入日期的格式。

date -d "20110724T080000Z" -u

会让日期抱怨

date: invalid date `20110724T080000Z'

另外,“20110724T080000Z”表格的格式是什么?我尝试用谷歌搜索它但没有成功。

I have a string of the format

20110724T080000Z

and I want to convert that to local time in a shell script on linux. I thought I simply could give it as input to date, but I don't seem to be able to tell date what format my input date has.

this

date -d "20110724T080000Z" -u

would make date complain

date: invalid date `20110724T080000Z'

Also, what is the format of the form "20110724T080000Z" called? I have had little success trying to google for it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

懷念過去 2024-12-02 08:53:29

这是组合日期和时间的ISO8601“基本格式”date 似乎无法解析 20110724T080000Z,但如果您准备进行一些字符串替换,它会解析 20110724 08:00:00Z > 正确。

That's ISO8601 "basic format" for a combined date and time. date does not seem to be able to parse 20110724T080000Z, but if you are prepared to do a few string substitutions it parses 20110724 08:00:00Z correctly.

念三年u 2024-12-02 08:53:29

date 程序识别这 2 个:
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

The date program recognizes these 2:
yyyy-mm-ddTHH:MM:SS
yyyy-mm-dd HH:MM:SS

So:

a=20110724T080000Z
b=${a:0:4}-${a:4:2}-${a:6:5}:${a:11:2}:${a:13:2}
date +%F_%T -d "${b} +0"

Would print 2011-07-24_12:30:00 in my locale.

攀登最高峰 2024-12-02 08:53:29

它被称为祖鲁时间。它与 UCT 相同,过去被称为 GMT。它与军队一起使用来指定 UCT,因此不会出现通信方面的混乱。

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

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

date [-u|--utc|--universal] [mmddHHMM[[cc]yy][[.SS]] 此形式的唯一有效选项指定协调世界时。

its called Zulu time. Its the same as UCT, which used to be referred to as GMT. It's used with the military to specify UCT so there is no confusion on correspondance.

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

this command should work according to wikipedia:

date [-u|--utc|--universal] [mmddHHMM[[cc]yy][[.SS]] The only valid option for this form specifies Coordinated Universal Time.

不语却知心 2024-12-02 08:53:29

您可以尝试利用 perl:

perl -e '打印标量本地时间(shift), "\n"' 20110724T080000Z

不过你可能需要稍微调整一下才能使其正常工作。好吧,我不知道为什么 Perl 版本做得不好,但这是我尝试过的 Ruby 版本,尽管我不能很好地选择时间:

ruby -e "需要 '日期';打印 Date.strptime('20110724T080000Z','%Y%m%dT%H%M%SZ').ctime"

给出:

2011 年 7 月 24 日星期日 00:00:00

You might try taking advantage of perl:

perl -e 'print scalar localtime(shift), "\n"' 20110724T080000Z

Though u might have to tweak this a little to get it to work correctly. Ok, I don't know exactly why the perl version doesn't do it well, but here is a Ruby version I've tried, though I can't pick the time out well:

ruby -e "require 'date';print Date.strptime('20110724T080000Z','%Y%m%dT%H%M%SZ').ctime"

gives:

Sun Jul 24 00:00:00 2011

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文