Лучший способ конвертировать Unix time_t в / из временных часовых поясов? - PullRequest
2 голосов
/ 25 июля 2010

Мой код получает time_t из внешнего источника.Однако время time_t не основано на времени эпохи UTC, а вместе с ним я получаю строку часового пояса (например, EDT, PST и т. Д.), Основанную на этой смещенной эпохе.Мне нужно преобразовать это время в истинную UTC Epoch time_t.

Кроме того, мне нужно иметь возможность идти в противоположном направлении, беря time_t на основе UTC Epoch и часовой пояс, и создать смещенное time_t, нов этой ситуации вместо часового пояса (например, EDT / PST) и т. д. у меня есть описание часового пояса в стиле Unix, например, «Америка / Нью-Йорк», и мне нужно преобразовать его в правильный часовой пояс, учитывая летнее время, поэтому мне нужно вернутьсяиз алгоритма, как смещение time_t, так и правильный дескриптор (EDT, EST).

Я почти уверен, что смогу справиться с этим, временно изменив tzset () и некоторую комбинацию преобразований между разбивкойtime, time_t и timeval, но от этого всегда у меня болит мозг, и я чувствую, что упускаю что-то очевидное.Кто-нибудь может порекомендовать какой-нибудь код или sudo-код для этого или хотя бы правильный подход?

Ответы [ 2 ]

1 голос
/ 25 июля 2010

time_t в секундах, поэтому просто сместите ваши значения time_t в 3600 раз на количество часов, на которое смещен часовой пояс. Если у вас есть определенное смещение (то есть EST или EDT вместо US / Eastern или EST5EDT или еще много чего), то это действительно просто и не подвержено ошибкам.

0 голосов
/ 25 июля 2010

Может ли какая-нибудь из этих функций помочь вам? localtime (), gmtime () и т. д.

...