欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

C++获取Unix时间戳(分别以秒和毫秒为单位)的几种方法

时间:2023-05-30
文章目录

前言正文

1、调用ctime库2、调用chrono3、调用sys/timeb.h 总结


前言

   有时需要打印当前的绝对时间,并计算时间间隔,Unix时间戳是一种很好的时间记录标准,表示从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。C++的标准库中并没有能够打印时间戳的方法,需要借助其它第三方库,在此记录了几种方法

正文 1、调用ctime库

#include #include int main(){ std::time_t t = std::time(0); // t is an integer type std::cout << t << " seconds since 01-Jan-1970n"; return 0;}

输出为:

1467214075 seconds since 01-Jan-1970

该方法只适用于表示以秒为单位的Unix时间戳。

2、调用chrono

#include #include int main(){ std::chrono::milliseconds ms = std::chrono::duration_cast< std::chrono::milliseconds >( std::chrono::system_clock::now().time_since_epoch() ); std::cout << ms.count() << std::endl; return 0;}

输出以毫秒为单位的时间戳:

1644848307026

如果想得到以秒为单位的时间戳,只需将milliseconds换成seconds即可。

3、调用sys/timeb.h

#include #include int main(){ timeb t; ftime(&t); long now = t.time * 1000 + t.millitm; std::cout << now << std::endl; return 0;}

输出以毫秒为单位的时间戳:

1644848305625

如果想得到以秒为单位的时间戳,需要修改成如下形式:

#include #include int main(){ timeb t; ftime(&t); int now = t.time; std::cout << now << std::endl; return 0;}

输出为:

1644848308

总结

  以上三种方法最终得到的都是Unix时间戳,其中以ctime库的方法使用最为简单,但只能得到以秒为单位的时间戳,具体使用看需求。
  后续有其它方法再不断进行更新。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。