-3
QString timestr("Fri Jan 5 14:03:11 CST 2018");
QDateTime time1 = QDateTime::fromString(timestr, "ddd MMM d hh:mm:ss CST yyyy");
qDebug() << time1.toString("yyyyMMdd");

我尝试将字符串转换为更简单的时间描述,但它失败了。我的 QString 可能有什么问题?

4

1 回答 1

0

\note 与此函数的其他版本不同,日期和月份名称必须以用户的本地语言给出。如果用户的语言是英语,则只能使用英语名称。

另请注意,这是系统区域设置,而不是您在 QLocale 中设置的默认区域设置。要解析这样的英语日期字符串,您需要在英语实例上使用 QLocale::fromString() 。所以下面的代码会正确返回。

QLocale loc(QLocale::English);
    QString timestr("Fri Jan 5 14:03:11 CST 2018");
    QDateTime time1 = loc.toDateTime(timestr, "ddd MMM d hh:mm:ss CST yyyy");
    qDebug() << time1.toString("yyyyMMdd");

希望它可以帮助其他人解决同样的问题。

于 2018-05-03T07:59:30.187 回答