当我运行以下代码时,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。
来自QDateTime::FromString()
(Qt 5.12)文档:
注意:与此函数的其他版本不同,日和月名称必须以用户的本地语言给出。 只有当用户的语言是英语时,才可能使用英语名称。
您的系统语言环境必须是英语以外的其他语言环境,所以这就是它无法工作的原因。