将 QString 日期(RFC 822 格式)转换为另一种基于文化的 QString 格式

Convert QString date (RFC 822 format) to another QString format based on culture

我有一个包含多个字符串的数据库,我从查询中获取了这些记录,并且我在 QString 中收到了这种格式的数据:

"Mon, 13 Nov 2017 09:48:45 +0000"

所以,我需要根据文化来转换它,例如,如果我想转换成意大利文化?

所以结果将是:

"Lun, 13 Nov 2017 09:48:45"

qt 中存在这种类型的转换还是我必须手动进行?

感谢大家

Qt 提供了 QLocale class 来处理 language/country 细节。它有接受 QDateTime.

QLocale::toString() 的重载

它还有一个功能QLocale::toDateTime()做反向操作。但在你的情况下,非本地感知 QDateTime::fromString() 应该可以工作。

最后你应该有这样的东西(+ 或 - 一些你想要的确切格式的参数)。

QString source = "Mon, 13 Nov 2017 09:48:45 +0000";
QDateTime dt  = QDateTime::fromString(source, Qt::RFC2822Date);
QString result = QLocale().toString(dt, Qt::RFC2822Date);

请注意 QLocale() 根据底层 OS 中的当前用户设置构造一个实例。您还可以强制使用特定的 language/country,例如:QLocale(QLocale::Italian).