c++ - 在 QDateTime 中格式化小时数的 Qt4 问题

标签 c++ qt qt4 qdatetime

我对以下代码有疑问:

QDateTime test2;
test2.setTime_t(25);
qDebug() << test2.toString("hh:mm:ss");

这将打印“01:00:25”而不是 00:00:25。 为什么第一个小时设置为 01 而不是 00?

我认为可能使用了 am/pm 符号,所以我尝试了这个

QDateTime test2;
test2.setTime_t(3600*22+25);
qDebug() << test2.toString("hh:mm:ss");

我仍然收到输出

“23:00:25”

帮助:)

最佳答案

这是因为您没有将 QDateTime 设置为 UTC。那么,UTC 时间 1970 年 1 月 1 日的 00:00:25 可能是您本地时区的 01:00:25?你的代码在 UTC+10 对我来说是“10:00:25”:)

试试这个:

QDateTime test2;
test2.setTimeSpec(Qt::UTC);    
test2.setTime_t(25);
qDebug() << test2.toString("hh:mm:ss");

关于c++ - 在 QDateTime 中格式化小时数的 Qt4 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559226/

相关文章:

c++ - 在 QComboBox 中搜索 QString

qt - 我们如何知道字符串的宽度和高度?

c++ - 将继承重构为模板,同时保留某些特性

基于 QML 的 Qt 文件浏览器

c++ - 字符串转为二进制

c++ - QString 中的哪个函数对用于转换为 std::string 或从 std::string 转换?

c++ - 对于少量整数,最快的排序算法是什么?

c++ - GDI+ 图形对象 - 使用 GDI 直接绘制到 DC 时抗锯齿丢失

C++ 与 Eclipse 没有工具链?

c++ - 如何使用 Qt 将参数从 QML View 发送到模型?