GMT 타임스탬프에서 에포크 시간 가져오기

GMT 타임스탬프에서 에포크 시간 가져오기

GMT 타임스탬프를 기준으로 날짜 신기원 시간을 계산해야 하는데 현지 시간이 해당 시간대에 속하지 않습니다. 현재 현지 시간은 CEST입니다.

그래서 에포크 시간을 계산하려고 하면

date -d "2017-08-05 10:10:10" "+%s"

알겠어요

1501927810

하지만 주어진 시간은 GMT이므로 결과는 다음과 같습니다.

1501927810

현지 시간과 GMT 사이의 시차를 수동으로 추가하려고 합니다.

date -d "2017-08-05 10:10:10 +2 hours" "+%F %T"

하지만 이것은 나에게 준다

2017-08-05 11:10:10

+1시간만 추가된 이유! ?

답변1

date환경 변수를 설정하여 사용할 GMT 시간대를 지정할 수 있습니다 TZ.

$ TZ=GMT date -d "2017-08-05 10:10:10" "+%s"
1501927810

그렇지 않으면 날짜 문자열을 GMT(2가 아닌 +0시간)로 지정해야 합니다.

$ date -d "2017-08-05 10:10:10 +0" "+%s"
1501927810

답변2

원래 날짜의 알려진 시간대를 날짜 문자열에 추가할 수 있습니다.

date -d "2017-08-05 10:10:10 GMT" +%s
1501927810
date -d "2017-08-05 10:10:10 PST" +%s
1501956610

다른 답변에서 언급했듯이 일광 절약 시간제의 변경 사항도 고려해야 하며 이는 GMT실제로 원하는 시간대가 아닐 수도 있습니다.

다음 형식을 사용할 수도 있습니다.

date --date 'TZ="Europe/London" 2017-08-05 10:10:10' +%s
1501924210

이는 환경 변수를 설정하는 것과는 다르며 , 에포크 타임스탬프를 사용할 때는 환경 변수를 사용하는 것이 작동하지 않는다는 TZ점에 유의해야 합니다 .TZ

echo "TODAY: $(TZ=UTC date) : $(TZ=UTC date '+%s') YESTERDAY: $(TZ=UTC+24 date) $(TZ=UTC+24 date '+%s')" 
TODAY: Fri Oct 15 21:57:12 UTC 2021 : 1634335032 YESTERDAY: Thu Oct 14 21:57:12 UTC 2021 1634335032

날짜는 정확하지만 에포크 타임스탬프는 동일합니다.

이것은 작동합니다:

echo "TODAY: $(date) : $(date '+%s') YESTERDAY: $(date -d '24 hours ago') $(date -d '24 hours ago' '+%s')"
TODAY: Fri Oct 15 23:05:03 IST 2021 : 1634335503 YESTERDAY: Thu Oct 14 23:05:03 IST 2021 1634249103

이는 에포크 타임스탬프가 단순히 특정 날짜 이후의 초 수이므로 시간대의 영향을 받지 않기 때문입니다. 이는 어느 시간대에 있든 마찬가지입니다.

따라서 다른 시간대에서 특정 날짜의 에포크 타임스탬프를 원하는 경우 다음과 같이 사용할 수 있습니다.

date -d "$(TZ=PST date)" +%s

이미 날짜 문자열이 있고 그 문자열이 다른 시간대에 속해 있다는 것을 알고 있으며 이를 에포크 타임스탬프로 만들고 싶다면 TZ환경 변수를 사용해도 작동하지 않습니다.

TZ=GMT date -d "2017-08-05 10:10:10" "+%s"
1501927810

다음과 동일한 타임스탬프를 생성합니다.

TZ=PST date -d "2017-08-05 10:10:10" "+%s"
1501927810

답변3

타임스탬프가 UTC 형식인 경우 date다음 옵션을 사용하여 UTC 사용을 나타낼 수 있습니다 -u.

-u, --utc,--universal

UTC(협정 세계시) 인쇄 또는 설정

답변4

GMT는 여름과 겨울 사이에 1시간의 시차가 있는 시간대(영국, 포르투갈 등)를 설명하는 데 자주 사용됩니다. 8월에 영국은 GMT+1로 전환되지만, 연중 해당 기간의 레이블은 BST임에도 불구하고 시간대는 여전히 GMT로 설명되는 경우가 많습니다. 시간대는 date"Europe/London"으로 기록됩니다. (원래 시간대는 날짜 정의에 선언되어 있습니다. 설정을 통해 표시할 대상 시간대를 선택할 수 있습니다.TZ 외부명령은 date일반적인 방법으로 환경 변수로 사용됩니다. )

date --date 'TZ="Europe/London" 2017-08-05 10:10:10'

다른 맥락에서 GMT는 UTC와 거의 동일한 불변성을 설명하는 데 사용됩니다. 여기서 시간대는 간단히 "GMT"로 지정됩니다.

date --date 'TZ="GMT" 2017-08-05 10:10:10'

타임스탬프가 해당하는 데이터 소스에 따라 다르며, 8월에는 한 시간 간격이 되기 때문에 이는 중요합니다.

관련 정보