有人知道在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,这不是所需的。