0

我收到来自 Clockify JSON API 的响应,其中包含 ISO8601 格式的日期和时间。

字符串的格式对我来说看起来不错,但是当我使用 QDateTime::fromString 将它们转换为 QDateTime 时,我得到奇怪且不正确的值:

QString aString          = "2021-09-10T15:56:00Z";
QString aDifferentString = "2021-09-10T15:56:00";
QString theString = durationInfo.value("end").toString();
QDateTime aDateTime = QDateTime::fromString(aString, Qt::ISODate);
QDateTime anotherDateTime = QDateTime::fromString(aString, "yyyy-MM-ddTHH:mm:ssZ");
QDateTime aDifferentDateTime = QDateTime::fromString(aDifferentString, Qt::ISODate);
endTime = QDateTime::fromString(theString,Qt::ISODate);

但是当我调试时,我看到变量在代码运行后具有这些值:

DateTime    Thu Jan 31 07:23:38 1974    QDateTime
aDifferentDateTime  Sat Nov 27 22:39:02 1971    QDateTime
aDifferentString    "2021-09-10T15:56:00"   QString
aString "2021-09-10T15:56:00Z"  QString
anotherDateTime Sat Nov 27 22:39:02 1971    QDateTime
endTime Thu Jan 31 07:23:38 1974    QDateTime
theString   "2021-09-10T15:56:00Z"  QString

调试变量视图的屏幕截图

我在这里遗漏了什么,或者fromString功能或格式规范是否损坏?我的程序中的其余逻辑表现得相应怪异,因为日期都是错误的。

我正在使用 Qt Creator 4.13.0

基于 Qt 5.15.0(MSVC 2019,64 位)

建于 2020 年 8 月 25 日 10:06:59

从修订 fff3b41833

4

1 回答 1

0

这里的问题是/是调试器中 Qt 类型的显示。

变量视图显示 QDateTime 变量(可能还有其他变量)的错误值。如果您将它们传递给例如,这些值与打印的值不同qDebug()

要吸取的教训是仔细检查调试器是否告诉您真相。

为什么调试器中显示的值应该是错误的,我不确定...

于 2021-09-28T17:27:01.703 回答