存在するAIX
date -u
GMT形式で日付と時刻を提供します。
date
ローカルタイムゾーンの日付と時刻を提供します。
date +%s
現地時間をエポック時間として提供します。
GMT時間をエポック形式で取得する方法はありますか?
私のバージョンのAIXでは、-nおよび-uオプションのみを使用できます。したがって、-f オプションは使用できません。
私の目標は、現地時間とGMTの間の時間ごとのオフセットを計算することです。
私は$TZ environment variable
これが退屈であることができることを分析できる。代わりに、2つの時間帯の間の新起源の視差を60で割ることで、おおよその答えを得ることができます。
ベストアンサー1
「エポック形式の現地時間」のようなものはありません。date +%s
常にエポック以降の秒数、つまり1970-01-01 UTC以降の秒数を印刷します。数値はすべての時間帯で同じです。
ただし、ほとんどのstrftime(3)
実装では、date +%z
指定されたタイムゾーンの数値オフセットを印刷します。
$ TZ=Australia/Darwin date +%z
+0930
$ TZ=America/Toronto date +%z
-0400
これはGNUdate
とBSDで動作しますdate
。しかし、私はAIXについて何も知りません。
動作すると仮定すると、すべての時間帯に対してオフセットを秒単位で計算できます。そしてbash
:
#! /bin/bash
offset="$(TZ="$1" date +%z)"
sign=${offset:0:1}1
hours=${offset:1:2}
minutes=${offset:3:2}
if [ x"${hours:0:1}" = x0 ]; then hours="${hours:1}"; fi
if [ x"${minutes:0:1}" = x0 ]; then minutes="${minutes:1}"; fi
printf 'offset of TZ=%s: %d\n' "$1" $(( sign * 3600 * hours + 60 * minutes ))