2010-07-25 5 views
2

내 코드는 외부 소스에서 time_t를 수신합니다. 그러나 time_t는 UTC Epoch 시간을 기반으로하지 않으며 시간대 문자열 (예 : EDT, PST 등)을 얻고이 오프셋 된 시간에 기반합니다. 이것을 time_t 기반의 실제 UTC Epoch로 변환해야합니다.Unix time_t를 다른 시간대와 변환하는 가장 좋은 방법은 무엇입니까?

또한 반대 방향으로 이동하여 UTC Epoch 기반 time_t 및 timezone을 가져 와서 오프셋 된 time_t를 만들 수 있어야합니다 (예 : EDT/PST와 같은 표준 시간대 대신). , 나는 "America/New York"과 같은 유닉스 스타일의 시간대 설명을 가지고 있고 정확한 일광 절약 시간대로 변환해야하기 때문에 offset_t와 올바른 설명자 (EDT ,동부 표준시).

나는 일시적으로 tzset()과 broken-down time, time_t, timeval 사이의 전환을 일부 변경하여이 문제를 해결할 수 있다고 확신하지만,이 일을하면 항상 두뇌가 상처를 입히고, 분명히 뭔가 빠져 있어요. 누구나이 또는 적어도 적절한 접근을 할 몇 가지 코드 또는 sudo 코드를 권장 할 수 있습니까?

+1

모든 언어에서 시간 조작에 대해 명백하거나 적절한 (또는 명확하거나 행복하지 않은) 것은 없습니다. tzset() 및 localtime()/strftime()이 가장 좋습니다. –

답변

0

these functions 중 하나를 입력 하시겠습니까?

+0

이것들은 내가 다른 여러 시간 조작 명령과 함께 이와 같은 작업에 일반적으로 사용하는 것들입니다. 내가 문제가되는 것은 실제 명령을 수행하지 못하기 때문에 내가 원하는 것을 달성하기 위해 모든 다른 명령과 데이터 형식과 변환의 올바른 연결을 알아내는 것입니다. – bdk

1

time_t은 초 단위이므로 time_t 값을 시간대가 상쇄되는 시간의 3600 배로 오프셋합니다. 구체적으로 식별 된 오프셋 (예 : 미국/동부 또는 EST5EDT가 아닌 EST 또는 EDT 또는 기타 등등)이있는 한이 작업은 실제로 간단하며 오류가 발생하지 않습니다.

+1

감사합니다. 한쪽 방향으로는 EDT/EST가 있습니다. 다른 쪽에서는 미국/뉴욕 만 있습니다. 표준 시간대 (EDT, EST 등)를 사용하고 시간 오프셋을 반환하는 표준 함수가 있습니까? – bdk

+0

아니요. 아쉽게도 시간대 이름은 전 세계적으로 고유하지 않습니다. 미국 표준 시간대를 지원하기 만하면 하드 코드를 직접 작성하고 완료 할 수 있습니다. –

관련 문제