[PATCH] Re: Time zones (again)
Thiago Macieira
thiago at macieira.org
Wed Jun 22 19:17:02 PDT 2016
On quarta-feira, 22 de junho de 2016 22:47:33 PDT Robert Helling wrote:
> here is a patch which implements (I hope) what I promised. I did some quick
> checks in particular with the planner (there it indeed fixes a bug reported
> in the user forum which got me started in the first place thinking about
> time zones again) but maybe I did not cover everything. More testing might
> be advised. But looking at the code leaves me quite confident about it.
> + timestamp.setTimeSpec(Qt::UTC);
> + timestamp = QDateTime::fromString(date + " " + time, "yyyy-M-d
> hh:m:s");
The assignment on that second line erases any settings from the previous line.
If you want to parse *as* GMT, the only way to do it is using ISO format and
appending a "Z" to the target date. Something like
timestamp = QDateTime::fromString(date + ' ' + time + 'Z', Qt::ISODate);
Note: you need to ensure that the month, day and hour have leading zeroes.
Alternatively, parse date and time separately, then create the QDateTime from
the QDate and QTime objects.
In many places:
> QDateTime dt;
> + dt.setTimeSpec(Qt::UTC);
>[other code]
> - dt.setTime_t(gt.when - gettimezoneoffset(gt.when));
> + dt.setTime_t(gt.when);
Correct, but inefficient. Better would be:
QDateTime dt = QDateTime::fromTime_t(gt.when, Qt::UTC);
I've just realised that my recent changes in Qt 5.8 pessimises the default-
constructed QDateTime on 32-bit systems, compared to 5.7... gotta fix it.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
More information about the subsurface
mailing list