将指定的字符串更改为QDateTime

时间:2018-05-03 07:41:05

标签: qt qdatetime

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可能出现什么问题?

1 个答案:

答案 0 :(得分: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");

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