GMT 에포크 시간

GMT 에포크 시간

존재하다AIX

date -uGMT 형식으로 날짜와 시간을 제공합니다.
date현지 시간대의 날짜와 시간을 제공합니다.
date +%s현지 시간을 에포크 시간으로 제공합니다.

GMT 시간을 에포크 형식으로 얻는 방법이 있습니까?

내 버전의 AIX에서는 -n 및 -u 옵션만 사용할 수 있습니다. 따라서 -f 옵션을 사용할 수 없습니다.

내 목표는 현지 시간과 GMT 사이의 시간별 오프셋을 계산하는 것입니다.

나는 $TZ environment variable이것이 지루할 수 있다는 것을 분석할 수 있다. 대신, 두 시간대 사이의 신기원 시차를 60으로 나누면 대략적인 답을 얻을 수 있습니다.

답변1

"에포크 형식의 현지 시간"과 같은 것은 없습니다. date +%s항상 에포크 이후의 초 수, 즉 1970-01-01 UTC 이후의 초 수를 인쇄합니다. 숫자는 모든 시간대에서 동일합니다.

그러나 대부분의 strftime(3)구현에서는 date +%z지정된 시간대의 숫자 오프셋을 인쇄합니다.

$ TZ=Australia/Darwin date +%z
+0930
$ TZ=America/Toronto date +%z
-0400

이것은 GNU date와 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'

관련 정보