有谁知道将时区包含在 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"
最后一行是预期的。请注意,第二次已转换为 UTC,这不是我们想要的。