首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在BASH变量中将ISO8601转换为本地时间

在BASH变量中将ISO8601转换为本地时间
EN

Stack Overflow用户
提问于 2019-11-09 11:43:35
回答 4查看 590关注 0票数 2

我从一个API中提取了一个ISO8601变量"$sunrise“。现在我想把它转换成本地时间。我把$timeZone (美国/丹佛风格)也作为一个变量。

ISO8601时间戳如下: 2019-11-09T11:36:14+00:00

我希望在当地时区有一个友好的时间。这将是日出。

我已经尝试了脚本中的每种组合,如下所示:

TZ="$timeZone" newSunrise=echo $date -d "$sunrise" +"%s"

我不能让它工作。有人能帮我一下吗?

EN

回答 4

Stack Overflow用户

发布于 2019-11-09 13:18:50

您需要将时区放入日期引用中,例如:

代码语言:javascript
复制
var="2019-11-09T11:36:14+00:00"
timeZone="America/Denver"
newsunrise=$(date -d"TZ=\"${timeZone}\" $var")
票数 1
EN

Stack Overflow用户

发布于 2019-11-09 13:52:20

在上述解决方案的基础上,生成“本地时间”的结果

代码语言:javascript
复制
var="2019-11-09T11:36:14+00:00"
date -d"TZ=$(date +%Z) $var"

调用date +%Z是必需的,因为并不总是设置环境变量TZ。在这些情况下,系统范围内的“本地时区”(我相信/etc/timezone,但可能有额外的逻辑)。

票数 1
EN

Stack Overflow用户

发布于 2020-03-19 11:10:34

Linux上的date和macOS上的date是有区别的。如果你用的是macOS,你可以用brew安装date的Linux版本,然后稍加改动就可以使用user4829160的answer

代码语言:javascript
复制
# Install the Linux version of date
brew install coreutils

# Use gdate instead of date
var="2019-11-09T11:36:14+00:00"
timeZone="America/Denver"
newsunrise=$(gdate -d"TZ=\"${timeZone}\" $var")
echo $newsunrise
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58776213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档