QDateTime の ISO 文字列表現に含まれるタイム ゾーンを取得するよりクリーンな方法を知っている人はいますか?
私は次のものを使用できるはずです:
qDebug() << QDateTime::currentDateTime().toString(Qt::ISODate);
ただし、これは常に UTC 形式で出力されます。
2014-02-24T01:29:00Z
現在、私がこれに取り組んでいる方法は、オフセットを明示的に設定することにより、TimeSpec を Qt::offsetFromUtc に強制することです。これは、もともと QDateTime から取得しています。
QDateTime now = QDateTime::currentDateTime();
int offset = now.offsetFromUtc();
now.setOffsetFromUtc(offset);
qDebug() << now.toString(Qt::ISODate);
これにより、当初予想されていたことが得られます。
2014-02-24T01:29:00+02:00
これをよりクリーンな方法で行う方法を知っている人はいますか、それともバグとして記録する必要がありますか?
編集: Qt5.2.1 を使用しています
アップデート:
次の小さなプログラムは、私が何を意味するかを示しています。
#include <QtCore/QDateTime>
#include <QtCore/QDebug>
int main(int argc, int argv){
qDebug() << QDateTime::currentDateTime().toString(Qt::ISODate);
qDebug() << QDateTime::currentDateTime().toTimeSpec(Qt::OffsetFromUTC).toString(Qt::ISODate);
QDateTime now = QDateTime::currentDateTime();
int offset = now.offsetFromUtc();
now.setOffsetFromUtc(offset);
qDebug() << now.toString(Qt::ISODate);
return 0;
}
次の出力が生成されます。
"2014-02-24T10:20:49"
"2014-02-24T08:20:49Z"
"2014-02-24T10:20:49+02:00"
最後の行は期待されるものです。2 番目の時間は UTC に変換されていることに注意してください。これは必要なものではありません。