[Interest] Relashionship between time_t and QDateTime

Frank Hemer frank at hemer.org
Tue Aug 27 11:55:42 CEST 2013


On Tuesday 27 August 2013 10:19:06 Calogero Mauceri wrote:
> 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

Daylight savings handling in windows is somehow 'weird'.
The timestamps of files change when switching the system time from summer time 
to winter time and vice versa.

Frank



More information about the Interest mailing list