根据文化将QString日期(RFC 822格式)转换为另一种QString格式

时间:2017-11-13 14:23:31

标签: c++ qt date datetime date-conversion

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

  

“星期一,2017年11月13日09:48:45 +0000”

所以,我需要根据文化转换这个,例如,如果我想在意大利文化中进行转换?

结果将是:

  

“Lun,2017年11月13日09:48:45”

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

感谢所有

1 个答案:

答案 0 :(得分:1)

Qt提供QLocale类来处理语言/国家/地区细节。它有QLocale::toString()的重载,接受QDateTime

它还有一个函数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()根据底层操作系统中的当前用户设置构造实例。您还可以强制使用特定语言/国家/地区,例如:QLocale(QLocale::Italian)