Я обрабатываю сохраненные даты и время. Я храню их в файле по Гринвичу в строковом формате (т.е. DDMMYYYYHHMMSS
). Когда клиент запрашивает, я преобразовываю эту строку в struct tm
, а затем преобразовываю ее в секунды, используя mktime
. Я делаю это, чтобы проверить недопустимый DateTime. Я снова конвертирую секунды в строковый формат. Вся эта обработка в порядке, никаких проблем вообще.
Но у меня есть одна странная проблема: я сохранил дату и время по Гринвичу с локалью также по Гринвичу. Из-за перехода на летнее время мое местное время изменилось на GMT+1. Теперь, если я запрашиваю сохраненную дату и время, я получаю на 1 час меньше, потому что функция mktime
использует локаль, то есть GMT+1, для преобразования struct tm
в секунды (tm_isdst
устанавливается на -1, поэтому mktime
автоматически определяет переход на летнее время и т. д.).
Любые идеи, как решить эту проблему?