为什么此代码返回无效日期?
QLocale locale("es");
QDate date = locale.toDate("1-Jun-14", "d-MMM-yy");
如果调试locale变量,它会正确初始化为locale es_ES,但不会返回日期,date.isValid()
会返回false。
答案 0 :(得分:0)
我不知道为什么,但你必须在月份之后加上.
(简短版本)。
我尝试了以下代码:
QLocale locale("es");
qDebug() << locale.standaloneMonthName(6, QLocale::ShortFormat);
QDate date = locale.toDate("01-Jun.-14", "dd-MMM-yy");
qDebug() << date;
输出令人惊讶:
"Jun."
QDate("1914-06-01")
锁定就像一个错误给我,如果我尝试使用它与德国语言。
更新:好的,我明白了。这非常令人困惑。您必须使用locale.monthName
给出的简称。这是例如&#34;君&#34。对于ES和&#34; Juni&#34;对于DE。这没有任何意义。在德国,简称&#34; Juni&#34;是&#34; Jun&#34;。对于西班牙我不知道。这是一个错误。
更新2 :我想我了解系统(至少对于德语区域设置)。如果全名大于4个字符(例如&#34; Januar&#34;),则短版本是真正的简短形式(&#34; Jan&#34;),附加一个点(&#34; Jan.& #34)。如果全名短于4个字符,则短格式与长格式完全相同(例如&#34; Mai&#34;)。但我不明白为什么要附加一个点,因为对于EN语言环境,不会附加点。
答案 1 :(得分:0)
我在QT上开了一个案例,答案就是:
西班牙语的Unicode CLDR数据在月份名称后面有一个点。
这不是一个错误,它需要点。