首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QDate::toString()和QDate::fromString()在win10和win7中有不同的行为

QDate::toString()和QDate::fromString()在win10和win7中有不同的行为
EN

Stack Overflow用户
提问于 2022-08-03 04:14:57
回答 1查看 41关注 0票数 0

我发现QDate::toString()在win10和win7中有不同的行为。默认QLocale(中文,简体汉,中国)。

代码语言:javascript
运行
AI代码解释
复制
qDebug() << QDate(2022,8,1).toString("MMM d yyyy");

win10 10/x64中的输出

代码语言:javascript
运行
AI代码解释
复制
"8月 1 2022"

在win7 7/x64(以上pc机的VM)中输出

代码语言:javascript
运行
AI代码解释
复制
"八月 1 2022"

fromString()具有类似的行为

代码语言:javascript
运行
AI代码解释
复制
auto date1 = QDate().fromString("8月 1 2022", "MMM d yyyy"); // win10 ok, win7 fail
auto date2 = QDate().fromString("八月 1 2022", "MMM d yyyy"); // win10 fail, win7 ok

我必须将字符串(如“8 QDate 1 2022”)解析为win7中的MMM,我尝试了"MMM“和”MMM“,都失败了。你能告诉我怎么修吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-23 03:29:37

我使用以下函数修复了它。基本思想是尝试以不同的方式解码字符串,直到它成功为止。这在win7和win10上都适用。谢谢丹尼尔和阿塔塞克斯。

代码语言:javascript
运行
AI代码解释
复制
QDate parseDateTime(QString str)
{
    QDate date = QDate::fromString(str, Qt::ISODate);
    if(date.isValid())
        return date;

    date = QDate::fromString(str, "MMM d yyyy");
    if(date.isValid())
        return date;

    date = QDate::fromString(str, "MMMM d yyyy");
    if(date.isValid())
        return date;

    date = QLocale("zh_CN").toDate(str.simplified(), "MMM d yyyy");
    return date;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73221549

复制
相关文章

相似问题

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