QDateTime из строки (__DATE__) недопустим - PullRequest
1 голос
/ 14 июля 2020

Когда я запускаю следующий код, qdatetime недействителен:

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

Содержимое dateString = Jul 14 2020, поэтому лишних пробелов нет. Почему не работает. Следующий код работает нормально:

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

Он имеет тот же формат даты, а также основан на __DATE__.

Результат:

Build date  -3600000
Build date 2 1594677600000

My Полный код:

#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();
}

Я работаю на ubuntu 18.04.

1 Ответ

1 голос
/ 14 июля 2020

From QDateTime::fromString() (Qt 5.12) документация:

Примечание: в отличие от другой версии этой функции, названия дня и месяца должны быть указаны в местный язык пользователя . Можно использовать имена Engli sh только в том случае, если язык пользователя - Engli sh.

Языковой стандарт вашей системы должен отличаться от Engli sh, поэтому он не может работа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...