Преобразовать ISO8601 в местное время в переменной BASH - PullRequest
0 голосов
/ 09 ноября 2019

Я извлекаю переменную ISO8601 "$ sunrise" из API. Теперь я хотел бы перевести его на местное время. У меня есть переменная $ timeZone (стиль Америка / Денвер).

Метка времени ISO8601 выглядит следующим образом: 2019-11-09T11: 36: 14 + 00: 00

IХотелось бы, чтобы люди дружелюбно проводили время в местном часовом поясе. Это будет восход солнца.

Я пробовал каждую комбинацию в сценарии, который я могу представить так:

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

Я не могу заставить его работать. Кто-нибудь, пожалуйста, дайте мне руку?

Ответы [ 3 ]

1 голос
/ 09 ноября 2019

Опираясь на вышеупомянутое решение, и генерируя результат в 'местное время'

var="2019-11-09T11:36:14+00:00"
date -d"TZ=$(date +%Z) $var"

Требуется вызов date +%Z, так как переменная окружения TZ не всегда установлена. В этих случаях общесистемный «местный часовой пояс» (я полагаю / etc / timezone, но может быть дополнительная логика).

1 голос
/ 09 ноября 2019

Вам необходимо ввести часовой пояс в ссылку на дату, например:

var="2019-11-09T11:36:14+00:00"
timeZone="America/Denver"
newsunrise=$(date -d"TZ=\"${timeZone}\" $var")
0 голосов
/ 09 ноября 2019

Мой код будет идти в программе и назначать переменную. Я попытался адаптировать оба ваших предложения, но ни одно из них не сработало так, как я реализовал.

newSunrise=date -d"TZ=$(date +%Z) $sunrise"

Нет данных, хранящихся в $ newSunrise

Кроме того, почему вы сбежалицитаты? Я только учусь.

...