我发现QDate::toString()在win10和win7中有不同的行为。默认QLocale(中文,简体汉,中国)。
qDebug() << QDate(2022,8,1).toString("MMM d yyyy");
win10 10/x64中的输出
"8月 1 2022"
在win7 7/x64(以上pc机的VM)中输出
"八月 1 2022"
fromString()具有类似的行为
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“,都失败了。你能告诉我怎么修吗?
发布于 2022-08-23 03:29:37
我使用以下函数修复了它。基本思想是尝试以不同的方式解码字符串,直到它成功为止。这在win7和win10上都适用。谢谢丹尼尔和阿塔塞克斯。
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;
}
https://stackoverflow.com/questions/73221549
复制相似问题