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

标签 c++ qt timestamp qdatetime

我正在尝试从这样的 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

当然这是错误的,我认为这是由于“本地”设置(考虑我在意大利)造成的。

this website 上验证我得到了正确的结果:

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

关于c++ - Qt5 (C++) 从 GMT/UTC 字符串到 UNIX 时间戳的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791139/

相关文章:

c++ - 在 C++ 中释放内存期间,迭代器与指针有何不同

c++ - 如何在 C++ 中解析包含 -0x1.0c7474fp+8 形式的十六进制文件?

c++ - 实例与新实例热交换自身

c++ - Qt C++ 写入/读取 "IBM037/CP037"

linux - 如何在 Linux 上查找 Qt 包含 header 的位置

C++代码可视化

css - 如何在具有焦点时更改 QPushButton 图标?

MySQL - 时间戳列上的 ER_TRUNCATED_WRONG_VALUE : Incorrect datetime value,

java - 从毫秒到天的 TimeUnit 转换对我不起作用

makefile - make 使用 stat 吗?这些数据是否存储在操作系统中?