从GMT/UTC字符串到UNIX时间戳的Qt5(C++)转换



我正试图从类似以下的GMT/UTC字符串进行转换:

11 Sep 2014 14:31:50 GMT

到Qt(c++)中的UNIX时间戳。

下面是代码(注意,我已经从第一个字符串中删除了"GMT"):

QString l_time = "11 Sep 2014 14:31:50";
QDateTime l_dt = QDateTime::fromString(p_gmt_date, "dd MMM yyyy hh:mm:ss");
uint l_timestamp = l_dt.toTimeSpec(Qt::UTC).toTime_t();

这给了我一个结果:

l_timestamp = 1410438710

当然,这是错误的,我认为这是由于"当地"环境(考虑到我在意大利)。

在这个网站上验证我得到了正确的结果:

1410445910

在同一个网站上,我可以交叉检查第一个结果是错误的,因为它返回:

Thu, 11 Sep 2014 12:31:50 GMT

有人能帮我吗?谢谢

已修复!

QString l_time = "11 Sep 2014 14:31:50";
QDateTime l_dt = QLocale(QLocale::Italian, QLocale::Italy).toDateTime(l_time, "dd MMM yyyy hh:mm:ss");
l_dt.setTimeSpec(Qt::UTC);
uint l_timestamp = l_dt.toTime_t();

这给了我正确的结果:

1410445910

最新更新