![]() |
|
![]() ![]() ![]() |
|
blackofe |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: нет Всего: 4 |
имеется функция по приведению времени. написана в 2003 студии. пока с ней разбирался, решил проверить, как аналогичные функции работают в студии 2005 и обнаружил неприятную вещь.
код – один и тот же. есть некая начальная дата "2006-10-23T23:57:15". она приводится к гринвичу
а затем вызывается mktime(), чтобы получить time_t значение, с которым потом можно работать. ниже приводится содержимое структуры tm и возвращаемое значение time_t до и после вызова mktime в 2003 и 2005 студиях соответственно:
mktime() как водится в процессе вызова пытается нормализовать структуру, но делает это она по-разному. в 2003-й студии она всего лишь выставляет ненулевым значение tm_isdst, что вполне логично – 24 (и 23) октября действует летнее время. но 2005-я студия не только меняет это значение, но еще и подкручивает час на единичку. в результате возвращаемые значения time_t различны: 1161676635 в 2003-й студии и 1161680235 – в 2005-й. разница – 3600, т.е. ровно час. пробовал переписать код под 2005 с использованием gmtime_s() и подобных – результат аналогичный. че за фигня? или я туплю? |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |