c++ - Qt/C++ - 将字符串时间戳转换为 uint

标签 c++ qt

我想创建一个日期,但我的时间戳在 char* 中。

所以我正在尝试转换为 int 但使用 atoi() 或 toInt() 我不明白。

qDebug() << atoi("1478790756754"); /* give 2147483647 */

QString tmp = "1478790756754";
qDebug() << tmp.toInt(); /* give 0 */

目的是获取日期,例如dateTime.setTime_t()。

最佳答案

您的时间戳似乎是 自 1.1.1970 以来的毫秒数 格式。这显然不适合 32 位整数,因为您的体系结构中的 int 类型也是如此。

解决方法很简单:转换为取值范围更大的类型,即long long:

QString tmp = "1478790756754";
QDateTime date = QDateTime::fromMSecsSinceEpoch(tmp.toLongLong());

QString 的转换函数也有一个指向 bool 的输出参数指针。您可以传递一个 bool 变量并对其进行测试以检查转换是否成功。

关于c++ - Qt/C++ - 将字符串时间戳转换为 uint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531045/

相关文章:

与第 3 方头文件相关的 C++ Builder 歧义错误

linux - 使用FTP向设备传输文件,是否需要运行服务器?

c++ - 读取 OpenCV Mat 16bit 到 QImage 8bit Greyscale

c++ - QGraphicsItem 不接收鼠标悬停事件

c++ - QChart实时表现

xml - 如何在 Qt 中读取 XML 节点的属性?

c++ - Qt connect(*sender, *signal, *receiver, *method) 不调用槽

c++ - 如何在 C++ 中正确执行线程?

c++ - 带有 Boost 的 g++-5.1.0 是否支持 C++17?

c++ - # C++ 中的宏运算符和 std::string 比较