Существует ли способ получить смещение данного часового пояса (идентификатор как EDT или America/New_York) от GMT в сценарии оболочки Linux?
Экспортируйте переменную среды TZ и напечатайте дату с% z для смещения часового пояса.
#!/bin/sh
export TZ=":Pacific/Auckland"
date +%z
Это обходной способ сделать это, но он работает ( частично основан на этом ):
#!/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
Этот скрипт в его текущей форме обрабатывает только сокращенные часовые пояса.