Здравствуйте, andrey.desman, Вы писали:
AD>Ну или
AD>AD>t = localtime(time);
t->>tm_isdst > 0 && --t->tm_hour;
AD>time = mktime(t);
AD>t = localtime(time);
AD>
Или так:
t = localtime(time);
t->tm_isdst > 0 && (t = localtime(time - 3600));
Всем привет!
Не поскажите как убрать переход на летнее время? Сразу в поиск не отсылайте, там смотрел, не нашел подходящего кода для своего случая
Проблема следующая:
У меня есть time_t переменная, я ее перевожу в tm, после этого конвертирую в строку с помощью strrtime. В результате вместо 00 часов после перехода на летнее время всегда получается 01.
time_t mDate;
char Temp[20];
.............
tm* DM = localtime(&m_Date);
strttime(Temp, 20, %d.%.m.&Y %H:%M:%S, DM);
Мне нужно избавиться от +1 час, при этом нужно использовать ТОЛЬКО POSIX функции, т.к. код может компилиться как в винде так и в юниксе. Убирать галку в настройках винды на время работы программы тоже не выход, т.к. в это время др. программы могут использовать фунции времени и будут получать неверный результат при конвертации. Пробовал менять переменную _daylight в 0 — не помогает, видимо, приложениие консольное и переменная окружения для таймзоны не выставлена, соотведственно функции берут системные настройки(пробовал получать таймзону возвращается значение по умолчанию).
Я конечно могу сам собирать строку из tm или сделать копию DM, вычесть в ней час и сконвертировать строку, но очень не хочится писать пол тонны проверок и т.п., да и медленно это. Хотелось бы узнать нормальный способ избавиться от летнего время.
Если кто сталкивался с этой проблемой помогите плиз...
Здравствуйте, Rockoos, Вы писали:
R>Всем привет!
R>Не поскажите как убрать переход на летнее время? Сразу в поиск не отсылайте, там смотрел, не нашел подходящего кода для своего случая
http://www.cplusplus.com/reference/clibrary/ctime/gmtime/
Здравствуйте, Rockoos, Вы писали:
R>Если кто сталкивался с этой проблемой помогите плиз...
Ну или
t = localtime(time);
t->tm_isdst > 0 && --t->tm_hour;
time = mktime(t);
t = localtime(time);
Здравствуйте, andrey.desman, Вы писали:
AD>Здравствуйте, andrey.desman, Вы писали:
AD>>Ну или
AD>>AD>>t = localtime(time);
t->>>tm_isdst > 0 && --t->tm_hour;
AD>>time = mktime(t);
AD>>t = localtime(time);
AD>>
AD>Или так:
AD>AD>t = localtime(time);
t->>tm_isdst > 0 && (t = localtime(time - 3600));
AD>
Громадное спаибо!!!!
Обидно, что сам не догодался, все так просто