gpt4 book ai didi

c++ - QLocale toDate 总是在 "es"语言环境上返回无效的 QDate

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:29 24 4
gpt4 key购买 nike

为什么此代码返回无效日期?

QLocale locale("es");
QDate date = locale.toDate("1-Jun-14", "d-MMM-yy");

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

最佳答案

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

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 给出的简称。这是为了例如“君。” ES 和 DE 的“Juni”。这真的没有任何意义。在德国,“Juni”的简称是“Jun”。对于西类牙,我不知道。这是一个错误。

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

关于c++ - QLocale toDate 总是在 "es"语言环境上返回无效的 QDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24091781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com