LINUX.ORG.RU

C работа/певевод timezone для существующей time_t


0

2

Приветствую.

Есть time_t метка времени, UTC. Необходимо получить метку времени для CET(UTC+1). Каким образом это можно было бы сделать? Просто прибавить 3600 - не вариант, так как есть еще Daylight saving => CET->CEST(UTC+2). Какие верианты/возможности можно было бы использовать для преобразования времени к разным поясам?

Язык разработки: С(99)
Возможность использования сторонних библиотек для работы с временем имеется.

Спасибо!

Ответ на: комментарий от kulti

Ну причем тут localtime? Так, к примеру, ты мне предлагаешь сохранить исходную временную зону, вызвать tzset 10 раз для 10 разных поясов, забирать значения localtime и после этого возвратить исходную временную зону? Мне кажется это решение как минимум своеобразным...

andreyse
() автор топика
Ответ на: комментарий от andreyse

Есть переменная окружения TZ, которую можно выставить в нужное вам значение, чтобы сделать превью времени в произвольном часовом поясе.

int main()
{
  time_t time = 0;
  std::cout << ctime(&time) << std::endl;
  return 0;
}
[kulti@myhost tz_test]$ TZ=UTC-3 && ./tz_test 
Thu Jan  1 03:00:00 1970

[kulti@myhost tz_test]$ TZ=UTC+3 && ./tz_test 
Wed Dec 31 21:00:00 1969
kulti ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.