Linux shell 脚本中给定时区与 GMT 的偏移量

发布于 2024-09-01 04:24:12 字数 77 浏览 5 评论 0原文

有没有办法在 Linux shell 脚本中获取给定时区(如 EDT 或 America/New_York 等标识符)与 GMT 的偏移量?

Is there a way to get the offset of a given timezone (identifier like EDT or America/New_York) from GMT in linux shell script?

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

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

发布评论

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

评论(2

迷爱 2024-09-08 04:24:12

导出 TZ 环境变量并使用 %z 打印日期作为时区偏移。

#!/bin/sh
export TZ=":Pacific/Auckland"
date +%z

Export your TZ environment variable and print date with %z for timezone offset.

#!/bin/sh
export TZ=":Pacific/Auckland"
date +%z
心安伴我暖 2024-09-08 04:24:12

这是一种迂回的方法,但它有效 (松散地基于此):

#!/bin/bash
ZONE=$1
TIME=$(date +%s --utc -d "12:00:00 $ZONE")
UTC_TIME=$(date +%s --utc -d "12:00:00")
((DIFF=UTC_TIME-TIME))
echo - | awk -v SECS=$DIFF '{printf "%d",SECS/(60*60)}'

将其保存为 tzoffset,使其可执行,然后按如下方式运行:

tzoffset PST

当前形式的此脚本仅处理缩写时区。

This is a roundabout way to do it but it works (loosely based on this):

#!/bin/bash
ZONE=$1
TIME=$(date +%s --utc -d "12:00:00 $ZONE")
UTC_TIME=$(date +%s --utc -d "12:00:00")
((DIFF=UTC_TIME-TIME))
echo - | awk -v SECS=$DIFF '{printf "%d",SECS/(60*60)}'

Save that as tzoffset, make it executable, and run it like this:

tzoffset PST

This script in its current form only handles abbreviated timezones.

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