Каков наилучший способ преобразования данных между локальным временем и UTC в C/C++?Преобразование между локальными временами и GMT/UTC в C/C++
Под «datetime», я имею в виду некоторое представление времени, которое содержит дату и время суток. Я буду доволен time_t
, struct tm
или любым другим представлением, которое позволяет.
Моя платформа - Linux.
Вот конкретная проблема, которую я пытаюсь решить: я получаю пару значений, содержащих юлианскую дату и количество секунд в день. Эти значения указаны в GMT. Мне нужно преобразовать это значение в локальный часовой пояс «YYYYMMDDHHMMSS». Я знаю, как преобразовать юлианскую дату в Y-M-D, и, очевидно, легко конвертировать секунды в HHMMSS. Однако сложной частью является преобразование часового пояса. Я уверен, что смогу найти решение, но я бы предпочел найти «стандартный» или «хорошо известный» способ, а не спотыкаться.
Возможное связан вопрос Get Daylight Saving Transition Dates For Time Zones in C
Спасибо! Я знал что-то вроде timegm(), должно было существовать, но не знал названия. –
Рад помочь. Преобразование времени может быть довольно сложной областью. Обычно рекомендуется хранить все в UTC, когда это возможно. Преобразование между часовыми поясами еще сложнее! –
Да, к сожалению, разработчики системы выбрали местное время как «стандартный» формат временной отметки для протокола обмена сообщениями. Я ненавижу, когда люди делают это. –