我从一个API中提取了一个ISO8601变量"$sunrise“。现在我想把它转换成本地时间。我把$timeZone (美国/丹佛风格)也作为一个变量。
ISO8601时间戳如下: 2019-11-09T11:36:14+00:00
我希望在当地时区有一个友好的时间。这将是日出。
我已经尝试了脚本中的每种组合,如下所示:
TZ="$timeZone" newSunrise=echo $date -d "$sunrise" +"%s"
我不能让它工作。有人能帮我一下吗?
发布于 2019-11-09 13:18:50
您需要将时区放入日期引用中,例如:
var="2019-11-09T11:36:14+00:00"
timeZone="America/Denver"
newsunrise=$(date -d"TZ=\"${timeZone}\" $var")发布于 2019-11-09 13:52:20
在上述解决方案的基础上,生成“本地时间”的结果
var="2019-11-09T11:36:14+00:00"
date -d"TZ=$(date +%Z) $var"调用date +%Z是必需的,因为并不总是设置环境变量TZ。在这些情况下,系统范围内的“本地时区”(我相信/etc/timezone,但可能有额外的逻辑)。
发布于 2020-03-19 11:10:34
Linux上的date和macOS上的date是有区别的。如果你用的是macOS,你可以用brew安装date的Linux版本,然后稍加改动就可以使用user4829160的answer。
# 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 $newsunrisehttps://stackoverflow.com/questions/58776213
复制相似问题