【问题标题】:How to get the current TimeStamp?如何获取当前时间戳?
【发布时间】:2011-02-16 09:21:55
【问题描述】:

我试图将当前时间作为 TimeStamp 获取,但没有成功。

我有这个代码:

QDateTime setTime = QDateTime::fromString (QString("1970-07-18T14:15:09"), Qt::ISODate);
QDateTime current = QDateTime::currentDateTime();
uint msecs = setTime.time().msecsTo(current.time());

return  QString::number(msecs);

输出是

Sunday, January 25th 1970, 03:17:35 (GMT)

【问题讨论】:

  • 时间戳到底是什么意思?请提供预期的输出。

标签: qt timestamp


【解决方案1】:

我想你正在寻找这个功能:

http://doc.qt.io/qt-5/qdatetime.html#toTime_t

uint QDateTime::toTime_t () const

将日期时间作为自 1970-01-01T00:00:00 以来经过的秒数返回,> 协调世界时 (Qt::UTC)。

在不支持时区的系统上,这个函数的行为就像本地时间是 Qt::UTC。

另见 setTime_t()。

【讨论】:

  • 我做到了:QDateTime current = QDateTime::currentDateTime(); uint 时间戳 = current.toTime_t(); ,但在我在这里测试结果后它没有给我当前日期:4webhelp.net/us/timestamp.php
  • 刚刚尝试将 QDateTime::currentDateTime().toTime_t() 返回的字符串传递给该站点并获得正确的时间。也许您在本网站的表单中设置了错误的时区。
  • toTime_t() 已弃用,请改用 toSecsSinceEpoch()(返回 qint64 而不是 2106 年溢出的 32 位 uint
【解决方案2】:

在 Qt 4.7 中,有 QDateTime::currentMSecsSinceEpoch() 静态函数,它完全可以满足您的需求,无需任何中间步骤。因此,我建议使用 Qt 4.7 或更新版本的项目。

【讨论】:

  • 请注意,这会返回以 毫秒 为单位的间隔,而不是秒。所以现在不是unix时代!
  • 只需执行 (QDateTime::currentMSecsSinceEpoch() / 1000) 这应该使它成为 Unix 时间:P
  • 这个答案让我浪费时间!因为这不完全是@martini 提到的unix 时间。
  • 在 qt 5.8 中(在编写全新时),他们添加了 currentSecsSinceEpoch 函数:doc.qt.io/qt-5/qdatetime.html#currentSecsSinceEpoch
  • 适用于我相信使用 Qt 5.10 的 PyQt 5.10
【解决方案3】:

从 Qt 5.8 开始,我们现在有 QDateTime::currentSecsSinceEpoch() 直接传递秒数,也就是真正的 Unix 时间戳。因此,无需再将结果除以 1000 即可获得秒数。

致谢:也作为评论发布到this answer。但是,我认为如果是单独的答案,则更容易找到。

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2011-12-26
    • 2017-02-15
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    相关资源
    最近更新 更多