首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在"es“区域设置中,QLocale toDate始终返回无效的QDate

在"es“区域设置中,QLocale toDate始终返回无效的QDate
EN

Stack Overflow用户
提问于 2014-06-07 06:53:40
回答 2查看 377关注 0票数 1

为什么这段代码返回一个无效的日期?

代码语言:javascript
复制
QLocale locale("es");
QDate date = locale.toDate("1-Jun-14", "d-MMM-yy");

如果调试语言环境变量,它将被正确地初始化为语言环境es_ES,但不返回日期,而date.isValid()返回false。

EN

回答 2

Stack Overflow用户

发布于 2014-06-07 07:48:19

我不知道为什么,但你必须在月份后面放一个. (简写版本)。我尝试了以下代码:

代码语言:javascript
复制
QLocale locale("es");
qDebug() << locale.standaloneMonthName(6, QLocale::ShortFormat);
QDate date = locale.toDate("01-Jun.-14", "dd-MMM-yy");
qDebug() << date;

输出结果令人惊讶:

代码语言:javascript
复制
"Jun."
QDate("1914-06-01")

锁对我来说就像一个bug,如果我尝试在德语地区使用它,它就会失败。

更新:好的,我知道了。这很让人困惑。您必须采用locale.monthName提供的缩写名称。这是“jun”的意思。代表ES和"Juni“代表DE。这真的没有任何意义。在德国,"Juni“的简称是"Jun”。对于西班牙,我不知道。这是一个bug。

更新2:我想我理解这个系统(至少对于德语语言环境是这样)。如果全名大于4个字符(例如"Januar")缩写形式是真正的缩写形式("Jan"),后缀一个点("Jan.")。如果全名少于4个字符,则短形式与长形式完全相同(例如"Mai")。但是我不明白为什么要附加一个点,因为对于EN语言环境,没有附加任何点。

票数 0
EN

Stack Overflow用户

发布于 2014-06-09 23:06:29

我在QT上打开了一个案例,得到的响应是:

西班牙语的Unicode CLDR数据在月份名称后有一个点。

这不是一个bug,它需要一个点。

更多细节:https://bugreports.qt-project.org/browse/QTBUG-39519

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24091781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档