【问题标题】:Get System Time In MilliSeconds as an int/double以 int/double 形式获取系统时间(以毫秒为单位)
【发布时间】:2015-05-29 18:33:09
【问题描述】:

我是 C++ 新手,但我根本无法让它工作。我正在尝试以毫秒为单位获取系统当前时间并对其进行处理,但它不会像我尝试的那样工作。

Qt

 QDateTime qt = new QDateTime();
  int x = qt.currentDateTimeUtc();
    if(x%5 ==0){
        //something

     }

c++

     double sysTime = time(0);
if(sysTime%5.00 ==0.00){


}

我得到无效的 double 类型的操作数到二元运算符错误。我不知道为什么?任何人都可以指出正确的方向

【问题讨论】:

  • a) 你不能用双打做模,b) time() 返回一个 int(并且没有 ms)

标签: c++ qt time


【解决方案1】:

对于QT,请尝试使用函数QDateTime::toMSecsSinceEpoch()

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

这将返回一个 qint64 http://doc.qt.io/qt-5/qtglobal.html#qint64-typedef

【讨论】:

  • 那么我该如何执行 %,因为类型会出错
  • qint64 是 long long int 的 typedef(Windows 上为 __int64)。你不能对它进行取模吗?
【解决方案2】:

如果你想get the unix timestamp in milliseconds in C,你可以试试这个代码:

include "time.h"
...
time_t seconds;
time(&seconds);
unsigned long long millis = (unsigned long long)seconds * 1000;

虽然请注意这是乘以 1000 - 它看起来像毫秒,但精度是秒 - 如果您尝试每 5 秒执行一次操作,根据您的 x % 5 代码判断可能就足够了,所以以下应该够了:

time_t seconds; time(&seconds);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-21
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多