提问者:小点点

字符串(__date__)中的QDateTime无效


当我运行以下代码时,qdatetime无效:

QString dateString = QString(__DATE__).simplified();
QDateTime date =  QDateTime::fromString(dateString, "MMM d yyyy");
qDebug() << "Build date " << date.toMSecsSinceEpoch();

dateString的内容=Jul142020,因此没有多余的空格。 为什么不起作用。 下面的代码可以正常工作:

qDebug() << "Build date 2" << QDateTime(QLocale("en_US").toDate(QString(__DATE__).simplified(), "MMM d yyyy")).toMSecsSinceEpoch();

它具有相同的日期格式,也基于__date__

输出为:

Build date  -3600000
Build date 2 1594677600000

我的完整代码:

#include <QCoreApplication>
#include <QDate>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString dateString = QString(__DATE__).simplified();
    QDateTime date =  QDateTime::fromString(dateString, "MMM d yyyy");
    qDebug() << "Build date " << date.toMSecsSinceEpoch();    
    qDebug() << "Build date 2" << QDateTime(QLocale("en_US").toDate(QString(__DATE__).simplified(), "MMM d yyyy")).toMSecsSinceEpoch();

    return a.exec();
}

我运行的是Ubuntu18.04。


共1个答案

匿名用户

来自QDateTime::FromString()(Qt 5.12)文档:

注意:与此函数的其他版本不同,日和月名称必须以用户的本地语言给出。 只有当用户的语言是英语时,才可能使用英语名称。

您的系统语言环境必须是英语以外的其他语言环境,所以这就是它无法工作的原因。