Я использую Qt 5.7.1 для Windows, 64-битная версия. В моем приложении я управляю некоторым временем с другим часовым поясом.Правильно ли это изменение в часовом поясе?
Я недавно видел какое-то странное поведение, а вот простой код, чтобы проверить:
QDateTime ParisDate(QDate(2016, 1, 20), QTime(2, 0, 0), QTimeZone("Europe/Paris"));
QDateTime PerthDate(QDate(2016, 1, 20), QTime(9, 0, 0), QTimeZone("Australia/Perth"));
QDateTime ParisConvertedToPerth = ParisDate.toTimeZone(QTimeZone("Australia/Perth"));
qDebug() << " ParisDate = " << ParisDate;
qDebug() << " PerthDate = " << PerthDate;
qDebug() << " delta Paris => Perth = " << ParisDate.secsTo(PerthDate)/3600;
qDebug() << " delta ParisConvertedToPerth => Perth = " << ParisConvertedToPerth.secsTo(PerthDate)/3600;
qDebug() << " ParisDate to UTC = " << ParisDate.toUTC();
qDebug() << " PerthDate to UTC = " << PerthDate.toUTC();
qDebug() << " ParisConvertedToPerth to UTC = " << ParisConvertedToPerth.toUTC();
Это следующий результат:
ParisDate = QDateTime(2016-01-20 02:00:00.000 Paris, Madrid Qt::TimeSpec(TimeZone) Europe/Paris)
PerthDate = QDateTime(2016-01-20 09:00:00.000 Australie (Ouest) Qt::TimeSpec(TimeZone) Australia/Perth)
delta Paris => Perth = 8
delta ParisConvertedToPerth => Perth = 0
ParisDate to UTC = QDateTime(2016-01-20 01:00:00.000 UTC Qt::TimeSpec(UTC))
PerthDate to UTC = QDateTime(2016-01-20 09:00:00.000 UTC Qt::TimeSpec(UTC))
ParisConvertedToPerth to UTC = QDateTime(2016-01-20 09:00:00.000 UTC Qt::TimeSpec(UTC))
Я не понимаю, потому что Я думал, что 2 переменные «ParisDate» и «PerthDate» должны относиться к одному и тому же моменту времени, подвергнутому другому часовому поясу.
Таким образом, я считаю, что «delta Paris => Perth» должно быть 0 часов.
Не могу поверить, что код Qt5 сломан, так что я пропустил здесь?
Это выглядит как ошибка. 'PerthDate.utcOffset()' возвращает 0:/ –