如何获得当前的TimeStamp?

use*_*898 43 qt timestamp

我试图将当前时间作为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);
Run Code Online (Sandbox Code Playgroud)

输出是

Sunday, January 25th 1970, 03:17:35 (GMT)
Run Code Online (Sandbox Code Playgroud)

Wim*_*ers 77

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

  • 请注意,这将以**miliseconds**而非秒为单位返回间隔.所以这不是unix时间! (10认同)
  • 在qt 5.8(编写全新版本时),他们添加了`currentSecsSinceEpoch`功能:https://doc.qt.io/qt-5/qdatetime.html#currentSecsSinceEpoch (3认同)
  • 简单地做(QDateTime :: currentMSecsSinceEpoch()/ 1000)这应该使它成为Unix时间:P (2认同)

Ves*_*niK 35

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

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

uint QDateTime :: toTime_t()const

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

在不支持时区的系统上,此函数的行为就像本地时间是Qt :: UTC一样.

另请参见setTime_t().

  • 刚尝试将QDateTime :: currentDateTime().toTime_t()返回的字符串传递给此站点并获得正确的时间.也许你在这个网站上的表格中设置了错误的时区. (2认同)

Adr*_*n W 8

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

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