QDateTime::fromstring( __DATE__, "MMM d yyyy" ) 返回无效

QDateTime::fromstring( __DATE__, "MMM d yyyy") returns invalid

本文关键字:yyyy 返回 无效 fromstring DATE QDateTime MMM      更新时间:2023-10-16

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

来源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解析当天。

QLocale("en_US").toDate(QString(__DATE__).simplified(), "MMM d yyyy");