【问题标题】:diffrence of two time in c++c++中的两次时间差
【发布时间】:2012-08-25 10:13:25
【问题描述】:

一开始我得到一个时间

time_t t1 = time(0) 

(获取当前时间是否正确?) 那么

time_t t2 = time(0)

现在我想以毫秒为单位找到 t1 和 t2 之间的差异 我搜索了很多,但没有奏效。 很多铸造问题,无法将其更改为毫秒 提前感谢您的帮助

【问题讨论】:

  • 你有 C++11 的特性?
  • 感谢所有帮助。我以错误的方式搜索。我试图以某种奇怪的方式投射 t1 - t2。

标签: c++ time


【解决方案1】:

使用difftime:

double diff = difftime(t2, t1);

这会给您以秒为单位的差异。将diff 乘以1000 得到毫秒数。

【讨论】:

  • 感谢所有帮助。我以错误的方式搜索。我试图以某种奇怪的方式投射 t1 - t2。
  • difftime 不会有小数部分,因为 t1, t2 是整数类型。
  • @MartinR ,这在实践中发生,但在理论上 On POSIX systems, time_t is measured in seconds, and difftime is equivalent to arithmetic subtraction, but C and C++ allow fractional units for time_t. ( en.cppreference.com/w/c/chrono/difftime )
【解决方案2】:

time() 返回一个整数类型,以秒为单位给出自纪元以来的时间,因此您永远不会获得毫秒分辨率。改用gettimeofday(),它给出了一个带有秒和微秒的结构:

struct timeval t1, t2;
gettimeofday(&t1, NULL);
/* ... */
gettimeofday(&t2, NULL);
int milliSeconds = (t2.tv_sec - t1.tv_sec) * 1000 + (t2.tv_usec - t1.tv_usec)/1000;

【讨论】:

    【解决方案3】:

    【讨论】:

    • 感谢所有帮助。我以错误的方式搜索。我试图以某种奇怪的方式投射 t1 - t2。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多