【问题标题】:QDateTime::fromstring( __DATE__, "MMM d yyyy") returns invalidQDateTime::fromstring( __DATE__, "MMM d yyyy") 返回无效
【发布时间】:2013-07-04 14:24:18
【问题描述】:

使用 QDateTime::fromstring() 解析 MSVC++ 预定义的 __DATE__(可能与 __TIME__ 一起使用)宏不会返回任何内容(= 无效的 QDateTime 对象)。为什么?

【问题讨论】:

    标签: c++ qt visual-c++


    【解决方案1】:

    来自http://msdn.microsoft.com/en-us/library/b0084kay%28v=vs.80%29.aspx

    DATE 当前源文件的编译日期。日期 是 Mmm dd yyyy 形式的字符串文字。月份名称 Mmm 是 与声明的库函数 asctime 生成的日期相同 在 TIME.H.

    dd 部分似乎填充了第 1..9 天的前导空格。

    QtDateTime::fromstring() 只支持

    d   the day as number without a leading zero (1 to 31)
    dd  the day as number with a leading zero (01 to 31)
    

    一种解决方案可能是在解析之前从__DATE__ 字符串中删除重复的空格,例如使用 QString::replace(" ", " ") 并使用单个 d 解析一天。

    【讨论】:

    • 你也可以用QString::simplified清除中间多余的空格。例如,QDateTime::fromString(QString(__DATE__).simplified(), "MMM d yyyy)
    【解决方案2】:
    QLocale("en_US").toDate(QString(__DATE__).simplified(), "MMM d yyyy");                       
    

    【讨论】:

    • 您应该添加一些信息,为什么这是答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2020-12-27
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多