Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > разница в реализации mktime в vs2003 и vs2005 |
Автор: blackofe 15.3.2007, 21:50 | ||||
имеется функция по приведению времени. написана в 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() и подобных – результат аналогичный. че за фигня? или я туплю? |