私は、Windowsでは64ビットバージョンのQt 5.7.1を使用しています。 私のアプリケーションでは、異なるタイムゾーンで日付を管理しています。これらのタイムゾーンの変換は正しいですか?
私は最近、いくつかの奇妙な行動を見て、ここでそれをテストするための簡単なコードできた:私は理解していない
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))
、理由:
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();
これは以下の出力を生成私は、2つの変数 "ParisDate"と "PerthDate"は同じタイムゾーンを参照すべきで、異なるタイムゾーンを出現すると考えました。
「デルタパリ=>パース」は0時間とすべきだと思います。
私はQt5コードが壊れているとは思えないので、ここで何を欠場しましたか?
それはバグのようになります。
使用したQtのdevの枝私はこの出力を持っています。 'PerthDate.utcOffset()'は0を返します:/ –