gpt4 book ai didi

c++ - Qt ISODate 格式的日期/时间包括时区

转载 作者:可可西里 更新时间:2023-11-01 16:36:54 24 4
gpt4 key购买 nike

有谁知道一种更简洁的方法来将时区包含在 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,这不是我们想要的。

最佳答案

当我需要时,我使用以下解决方法:

QDateTime::currentDateTime().toOffsetFromUtc(QDateTime::currentDateTime().offsetFromUtc()).toString(Qt::ISODate);

我没有测试@lpappa 是否在开发新版本。上面的解决方法已经在 Qt 5.3 上测试过了

关于c++ - Qt ISODate 格式的日期/时间包括时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21976264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com