存在する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 ))
答え2
UTC/GMTと現地時間の間の時間差を計算することが目標である場合は、次のように尋ねてください。
UTC=$(date -u +%H)
LT=$(date +%H)
DIFF=$((UTC - LT))
時間と相対位置によっては、結果が否定的である可能性があります。
答え3
AIX に Perl 5.9 以降がある場合は、以下を使用できます。時間::彫刻コアモジュールは、タイムゾーンオフセットを秒単位で取得します。
perl -MTime::Piece -le '$t=Time::Piece->new;print $t->tzoffset'
特定のタイムゾーンの場合は、次の操作を行います。
TZ=オーストラリア/ダーウィン perl -MTime::Piece -le '$t=Time::Piece->new;print $t->tzoffset'