[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