前言
`
QDateTime dt = QDateTime::fromString(“Thu, 18 May 2023 05:38:45 GMT”, “ddd, dd MMM yyyy hh:mm:ss ‘GMT’”);
"Thu, 18 May 2023 05:38:45 GMT"字符串转QDateTime失败
一、解决方法
QDateTime dt = QLocale::c().toDateTime(“Thu, 18 May 2023 05:38:45 GMT”, “ddd, dd MMM yyyy hh:mm:ss ‘GMT’”);
qDebug() << dt.toString(“yyyy-MM-dd hh:mm:ss”);
亲测可用!!!
二、解释
因为如果用QDateTime::fromString来解析的话,ddd和MMM这种需要符合你系统本地locale的表达,如果你是中文系统的话Thu和May就解析不了了,所以用QLocale::c().toDateTime(“Thu, 18 May 2023 05:38:45 GMT”, “ddd, dd MMM yyyy hh:mm:ss ‘GMT’”)就可以了,QLocale::c()是最简化的英语locale,可以解析英语的星期和月份
总结
如果字符串包含英语的日期和月份转QDateTime,使用QLocale::c().toDateTime(字符串,日期时间模板字符串);
推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs