【问题标题】:QDateTime::fromString returns invalid Date, what am I missing?QDateTime::fromString 返回无效的日期,我错过了什么?
【发布时间】:2012-01-19 14:42:34
【问题描述】:

我有一些从 sqlite 数据库中读取日期时间的代码,日期时间作为字符串返回。当我尝试使用 QDateTime::FromString 将其转换为日期时,它返回无效日期。以下是从数据库和转换返回的时间。 为什么这无法解析?

// -this is the value returned from the DB currentServerTime=2012-01-17 19:20:27.0

QString format("yyyy/MM/dd hh:mm:ss");
QString qCurrentServerTime(currentServerTime);
now = QDateTime::fromString(qCurrentServerTime, format);

【问题讨论】:

    标签: c++ qt qdatetime


    【解决方案1】:

    没有 QT 方面的专家,但如果 QDateTime::fromString() 按人们(合理地)期望的那样工作,并且根据 this,你没有使用正确的模式。

    你表示从sqllite数据库读取的字符串是“2012-01-17 19:20:27.0”,那么你的格式应该是yyyy-MM-dd HH:mm:ss.z

    详细说明:

    • 您的分隔符应该是“-”而不是“/”(如示例中所示)
    • 时间似乎是 24 小时制(19 -> 晚上 7 点)(所以请使用 HH 而不是 hh
    • 您有一位数表示毫秒,因此请添加.z

    【讨论】:

    • 对不起,我贴错了时间,我确实修改了格式以匹配我发布的内容并且有效。回到我的实际日期/时间,我无法让它工作。
    • @user1127081 所以你的实际字符串的格式是你建议的格式吗?好的。那么现在什么不起作用?
    • 谢谢,我发布了错误的日期时间(正确的日期时间是 2012 年 1 月 17 日上午 12:00:00),但你确实让我犯了错误(我也意识到我们有多种 d/t 格式在我们的表中)。下面是正确的格式。 "MM/dd/yyyy hh:mm:ss AP" 再次感谢
    • 我找到了一种更好的方法来管理日期转换-Boost。如果格式发生变化,PTime 会更加宽容。 boost::posix_time::ptime openTime(boost::posix_time::time_from_string("2012/01/17 12:00:00 AM")));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2013-12-04
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    相关资源
    最近更新 更多