GNU Date를 사용하지 않고 특정 시간대의 특정 시간을 사용자 시간대의 시간으로 변환

GNU Date를 사용하지 않고 특정 시간대의 특정 시간을 사용자 시간대의 시간으로 변환

구체적으로 내가 알고 싶은 것은 10:00 EST(10AM)일 때 사용자의 현재 시간대는 무엇입니까? 글을 쓰는 시점에서 영국 사용자(GMT)의 답변은 15:00(오후 3시)입니다.

내 구체적인 경우에는 분이나 날짜도 필요하지 않고 시간( 15이 경우)만 필요합니다.

이러한 성격의 대부분의 문제는 현재 시간(지금) 또는~에서사용자의 시간대입니다. 어느 시점에서는 변환을 하기 위해 Ruby로 전환하기도 했지만 UTC가 아닌 다른 곳에서 작동하도록 하는 것이 약간 어려웠습니다. 이를 수행할 수 있는 방법이 있어야 한다고 생각 date하지만 macOS는 BSD를 사용 date하고 대부분의 답변은 GNU를 사용합니다.

답변1

상당히 투박하지만 MacOS에서는 쉘과 다음 명령만 사용하여 수행해야 합니다 date.

2017-01-05 10:00:00 북미 동부 표준시를 시스템 현지 시간대로 변환합니다.

date -r $(TZ=America/Montreal date -j 010510002017 +%s)

현지 시간대가 아닌 다른 시간대로 변환하려면 외부 명령 앞에 원하는 대상 시간대를 추가하세요.

TZ=Australia/Sydney date -r $(TZ=America/Montreal date -j 010510002017 +%s)

매우 이상한 날짜 입력 형식에 유의하세요.mmddHHMMYYYY

답변2

POSIX API는 이와 관련하여 그다지 풍부하지 않습니다. 아마도 다음과 같은 것을 사용하는 것이 더 나을 것입니다.피츠시스템 도구보다:

#!/usr/bin/python

import datetime
import pytz

eastern = pytz.timezone('America/Montreal')
britain = pytz.timezone('Europe/London')
datetime.datetime(2017, 1, 5, 10, 0, tzinfo=eastern).astimezone(britain)

관련 정보