Hi,
I'm on x86_64 Gentoo Linux (timezone-data 2012c, glibc 2.15-r2), using Qt 
4.8.3. My timezone is set to Europe/Prague via the /etc/localtime file. I do 
not have the TZ environment variable set.

Calling qDebug() << 
QDateTime::currentDateTime().toString(Qt::SystemLocaleLongDate); shows me 
correct date and time (i.e. the hours displayed match reality), but instead of 
"CET" as expected, the timezone is shown as "CEST". Calling bash's `date`, both 
without any env var modifications and also with an explicit TZ=Europe/Prague, 
shows both correct hours and also the correct "CET" timezone.

I've dug into Qt's sources and it looks that the brokenDown (as of 
qdatetime.cpp, line 4089) indeed refers to CEST:

(gdb) print *brokenDown
$3 = {tm_sec = 20, tm_min = 33, tm_hour = 16, tm_mday = 29, tm_mon = 5, tm_year 
= 112, tm_wday = 5, tm_yday = 180, tm_isdst = 1, tm_gmtoff = 7200, tm_zone = 
0x907b30 "CEST"}

This machine has been running for a few days, the last reboot has definitely 
happened before the DST changeover.

However, `mitchc` on #qt kindly confirms that he also gets "CEST" in 
QDateTime's output, even after a reboot since the DST change. He says that 
brokenDown's tm_isdst is *not* set for him.

So, given that `date` reports the time correctly, I suspect that Qt is using 
some strange way of obtaining the TZ information. Do you have any ideas about 
what is confusing it to believe that DST is still active on this box? Please 
note that the actual hours being displayed are always correct, it's just the TZ 
indication which is off.

With kind regards,
Jan
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to