In MSVC's runtime library — yes, gmtime() is broken. From MSDN (http://msdn.microsoft.com/en-us/library/vstudio/0z9czt0w.aspx): > Return Value > A pointer to a structure of type tm. The fields of the returned structure > hold the evaluated value of the timer argument in UTC rather than in local > time. Each of the structure fields is of type int, as follows: > ... > tm_isdst > Always 0 for gmtime.
That's for gmtime(), but the same applies to gmtime_s() (http://msdn.microsoft.com/en-us/library/vstudio/3stkd9be.aspx) as all these *_s() functions are simply a result of Microsoft's NIH syndrome and share the [general] behavior with their standard counterparts. On 08/27/2013 09:57 PM, Thiago Macieira wrote: > On terça-feira, 27 de agosto de 2013 21:40:29, Constantin Makshin wrote: >> When converting time from UTC to local time, Windows uses the *current* >> state of daylight saving, not one that was active at the time the >> original timestamp is "pointing" to. > > Hmm... we have two versions of the code: FileTimeToSystemTime and gmtime. Are > you saying that gmtime is broken and does not apply the correct historical > daylight saving settings? > > #if defined(Q_OS_WINCE) > tm res; > FILETIME localTime = time_tToFt(secsSince1Jan1970UTC); > SYSTEMTIME sysTime; > FileTimeToSystemTime(&localTime, &sysTime); > FILETIME resultTime; > LocalFileTimeToFileTime(&localTime , &resultTime); > FileTimeToSystemTime(&resultTime , &sysTime); > res.tm_sec = sysTime.wSecond; > res.tm_min = sysTime.wMinute; > res.tm_hour = sysTime.wHour; > res.tm_mday = sysTime.wDay; > res.tm_mon = sysTime.wMonth - 1; > res.tm_year = sysTime.wYear - 1900; > res.tm_isdst = (int)isdst; > brokenDown = &res; > #elif !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) > // use the reentrant version of gmtime() where available > tm res; > brokenDown = gmtime_r(&secsSince1Jan1970UTC, &res); > #elif defined(_MSC_VER) && _MSC_VER >= 1400 > tm res; > if (!_gmtime64_s(&res, &secsSince1Jan1970UTC)) > brokenDown = &res; > #else > brokenDown = gmtime(&secsSince1Jan1970UTC); > #endif // !QT_NO_THREAD && _POSIX_THREAD_SAFE_FUNCTIONS
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest