[Interest] Relashionship between time_t and QDateTime

Calogero Mauceri mauceri at actgate.com
Tue Aug 27 10:19:06 CEST 2013


On 8/26/2013 7:30 PM, Thiago Macieira wrote:
> On segunda-feira, 26 de agosto de 2013 17:42:58, Calogero Mauceri wrote:
>> QDateTime myDateTime = QDateTime::fromTime_t(f_mtime);
>>
>> The date time printed doing a myDateTime.toString() is
>>
>>       Wed Dec 5 12:36:18 2007
>>
>>
>> Retrieving the last modified information using QFileInfo, the result is
>> different
>>
>>       QFileInfo fi(filepath);
>>       QDateTime myDateTime = fi.lastModified();
>>
>> I get this result
>>
>>       Wed Dec 5 11:36:18 2007
>>
>> That is there is one hour difference. I guess the difference is due to
>> the daylight saving management,
>> but I can not understand how that management is performed.
>>
>> Note: if I look at the file properties on Windows dialog, the last
>> modified time is shown as
>>
>>       Wed Dec 5 12:36:18 2007
> Ah, Windows...
>
> The problem might be simply a matter of timezones. The timestamps on files on
> Windows are not stored with time_t, but with some Windows-specific data. We get
> a FILETIME back from Win32.
>
> Anyway, up until Qt 5.2, you cannot trust the output of a QDateTime with
> qDebug since it does not include the timezone. You have to ensure that the
> dates you're comparing by text are in the same timezone:
>
> 	qDebug() << dt.toUTC();

Thanks for your reply.

Unfortunately the problem is still there even if I force a toUTC() 
conversion for both QDateTime, either the one initialized from time_t or 
the one returned by QFileInfo :/.
Similarly

	QDateTime dtFromTime_t = QDateTime::fromTime_t(mtime).toUTC();
	QDateTime dtFromFileInfo = fi.lastModified().toUTC();
	int sec = ABS(dtFromTime.secsTo(dtFromFileInfo));	// sec returned is 3600


Calogero

-- 
Calogero Mauceri
Software Engineer

Applied Coherent Technology Corporation (ACT)
www.actgate.com





More information about the Interest mailing list