c++ 获取当前时间(精确至秒、毫秒和微妙)

这篇具有很好参考价值的文章主要介绍了c++ 获取当前时间(精确至秒、毫秒和微妙)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

头文件

#include <chrono>

三个概念

Duration(时间段)

概念

表示两个时间点之间的时间差。

时间单位

  • 小时(hours):std::chrono::hours

  • 分钟(minutes):std::chrono::minutes

  • 秒(seconds):std::chrono::seconds

  • 毫秒(milliseconds):std::chrono::milliseconds

  • 微秒(microseconds):std::chrono::microseconds

  • 纳秒(nanoseconds):std::chrono::nanoseconds

时间精度

  • 整数类型精度:std::chrono::duration<int, TimeUnit>
  • 长整数类型精度:std::chrono::duration<long, TimeUnit>
  • 浮点类型精度:std::chrono::duration<float, TimeUnit>
  • 双精度类型精度:std::chrono::duration<double, TimeUnit>

示例1

// 创建一个200毫秒的时间段
std::chrono::duration<int, std::milli> duration1(200); 

// 表示5秒的duration,使用长整数类型精度
std::chrono::duration<long, std::seconds> duration2(5);

// 表示2.5秒的duration,使用浮点类型精度
duration<float, std::seconds> duration3(2.5);

// 表示1分钟的duration,使用双精度类型精度
duration<double, std::minutes> duration4(1);

示例2

#include <iostream>
#include <chrono>
#include <thread>

int main()
{
	    // 创建两个时间点
    	auto start = std::chrono::steady_clock::now();
    	std::this_thread::sleep_for(std::chrono::seconds(5)); // 模拟5s耗时操作
    	auto end = std::chrono::steady_clock::now();

    	// 计算时间间隔
    	std::chrono::duration<double> duration = std::chrono::duration_cast<std::chrono::duration<double>>(end - start);

    	// 输出时间间隔
    	std::cout << "Elapsed time: " << duration.count() << " seconds\n";
    
	    return 0;
}

执行结果:

[root@localhost debug]# ./timeTest
Elapsed time: 5.00022 seconds
[root@localhost debug]#

Time point(时间点)

概念

特定时钟上的一个时间。

组成

  1. 时钟(Clock),时钟类型包括:

    • steady_clock(稳定时钟)
    • system_clock(系统时钟)
    • high_resolution_clock(高分辨率时钟)
  2. 表示时间的持续时间(Duration)

示例

#include <iostream>
#include <chrono>
#include <thread>

int main()
{
	// 使用系统时钟获取当前时间点
    // std::chrono::system_clock::time_point currentTime = std::chrono::system_clock::now();
	auto currentTime = std::chrono::system_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(2));
    auto laterTime = std::chrono::system_clock::now();
 
    // std::chrono::duration<double> duration = std::chrono::duration_cast<std::chrono::duration<double>>(laterTime - currentTime);
    auto duration = std::chrono::duration_cast<std::chrono::duration<double>>(laterTime - currentTime);
    std::cout << "The duration is: " << duration.count() << std::endl;
    
    auto AfterTime = laterTime + std::chrono::hours(24);
	duration = std::chrono::duration_cast<std::chrono::duration<double>>(AfterTime - laterTime);
	std::cout << "The duration for 24H is: " << duration.count() << std::endl;
    
    return 0;
}    

执行结果:

[root@localhost debug]# ./timeTest
The duration is: 2.00589
The duration for 24H is: 86400
[root@localhost debug]#

Clock(时钟)

概念

提供了基准和刻度。

时钟类型

  • system_clock
    • system_clock是系统级别的时钟,它表示实时时钟,也就是指示当前时间的时钟。它的时间点是与系统的时钟相关联的,可能受到时钟调整和时区的影响;
    • system_clock用于获取当前的系统时间,可以用来进行日常时间计算和显示。它通常被用作默认的时钟类型;
    • system_clock的最小时间单位取决于系统,可能是秒、毫秒或微秒;
  • steady_clock
    • steady_clock是一个单调递增的时钟,不受任何时钟调整或时区的影响。它提供了一个稳定、可靠的时间基准,适合用于测量时间间隔和计算算法的执行时间;
    • steady_clock的最小时间单位取决于实现,通常是纳秒或微秒级别;
  • high_resolution_clock
    • 可用于测量小时间间隔的时钟。它通常使用最高分辨率的时钟源来提供更高的时间精度。在大部分平台上,high_resolution_clock是steady_clock的别名,因此也是一个单调递增的时钟;
    • 最小时间单位取决于实现,通常是纳秒或微秒级别;

示例1

#include <iostream>
#include <chrono>
#include <thread>

int main()
{
    // std::chrono::steady_clock::time_point steady_start = std::chrono::steady_clock::now();
    auto steady_start = std::chrono::steady_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(1));
    auto steady_end = std::chrono::steady_clock::now();

    auto duration = std::chrono::duration_cast<std::chrono::duration<double>>(steady_end - steady_start);
    std::cout << "The steady_clock duration is: " << duration.count() << std::endl;

    // std::chrono::high_resolution_clock::time_point high_resolution_start = std::chrono::high_resolution_clock::now();
    auto high_resolution_start = std::chrono::high_resolution_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(1));
    auto high_resolution_end = std::chrono::high_resolution_clock::now();

    duration = std::chrono::duration_cast<std::chrono::duration<double>>(high_resolution_end - high_resolution_start);
    std::cout << "The high_resolution_clock duration is: " << duration.count() << std::endl;
    
	return 0;
}

执行结果:

[root@localhost debug.x64-linux-g8]# ./timeTest
The steady_clock duration is: 1.00066
The high_resolution_clock duration is: 1.00085
[root@localhost debug.x64-linux-g8]#

示例2

// 获取当前时间的时间戳

#include <iostream>
#include <chrono>
#include <thread>

int main()
{
    auto currentTime = std::chrono::system_clock::now();
    auto currentTime_s = std::chrono::time_point_cast<std::chrono::seconds>(currentTime);
    auto currentTime_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(currentTime);
    auto currentTime_micro = std::chrono::time_point_cast<std::chrono::microseconds>(currentTime);
    auto currentTime_ns = std::chrono::time_point_cast<std::chrono::nanoseconds>(currentTime);
    auto valueS = currentTime_s.time_since_epoch().count();
    auto valueMS = currentTime_ms.time_since_epoch().count();
    auto valueMicroS = currentTime_micro.time_since_epoch().count();
    auto valueNS = currentTime_ns.time_since_epoch().count();

    std::cout << "Seconds: " << valueS << std::endl;
    std::cout << "Milliseconds: " << valueMS << std::endl;
    std::cout << "Microseconds: " << valueMicroS << std::endl;
    std::cout << "Nanoseconds: " << valueNS << std::endl;
 
    return 0;
}

执行结果:

[root@localhost debug]# ./timeTest
Seconds: 1700544228
Milliseconds: 1700544228873
Microseconds: 1700544228873536
Nanoseconds: 1700544228873536309
[root@localhost debug]#
示例3
// 将当前时间格式化为时间字符串
#include <iostream>
#include <chrono>
#include <iomanip>

int main()
{
	auto currentTime = std::chrono::system_clock::now();
	std::time_t t = std::chrono::system_clock::to_time_t(currentTime);
	std::cout << "CurrentTime: " << std::put_time(std::localtime(&t), "%F %T") << std::endl;

	return 0;
}

执行结果:文章来源地址https://www.toymoban.com/news/detail-763904.html

[root@localhost debug]# ./timeTest
CurrentTime: 2023-11-20 14:50:35
[root@localhost debug]#

到了这里,关于c++ 获取当前时间(精确至秒、毫秒和微妙)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python time 获取毫秒级时间戳

    1、time 获取秒级时间戳,格式化显示 结果: 2、datetime 获取当前日期时间 结果: 3、日期时间之间的转换 3.1、字符串转 time 3.2、字符串转 time 3.3、示例

    2024年02月16日
    浏览(47)
  • PHP实现获取毫秒时间戳的方法

    PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数。 php的毫秒是没有默认函数的,但提供了一个microtime()函数,该函数返回包含两个元素,一个是秒数,一个是小数表示

    2024年02月15日
    浏览(39)
  • Unity中获取时间戳、日期、时间、毫秒、秒以相互转换、自定义格式时间

    这里附带一个时间戳和时间转换的网址 时间戳就是从1970年1月1日0时0分0秒起到现在的总毫秒数,为什么时1970/1/1/00:00:00,因为第一台计算机发明时间是这个时间,所以时间戳诞生了。 比如说你要做一些时间相关的功能,那么基本都会用到时间戳。而且时间戳是精确的,比如说

    2024年02月05日
    浏览(52)
  • java获取当前系统时间

      在Java中,可以使用以下几种方法获取当前系统时间: 方法1:使用java.util.Date类 ```java import java.util.Date; public class Main { public static void main(String[] args) { Date date = new Date(); System.out.println(\\\"当前时间:\\\" + date); } } ``` 方法2:使用java.time.LocalDateTime类(推荐,自Java 8引入

    2024年02月11日
    浏览(58)
  • cmd命令获取当前时间

    在命令提示符中,你可以使用以下命令来获取当前时间: date 在命令提示符下输入 date 并按回车键,就可以看到当前的日期和时间。 time 在命令提示符下输入 time 并按回车键,就可以看到当前的时间。 wmic 在命令提示符下输入 wmic path win32_localtime get /format:list 并按回车键,就

    2024年02月12日
    浏览(46)
  • vue封装-获取当前时间

    在开发时,经常遇到转换时间戳的问题,这里封装了一个方法,方便使用。

    2024年02月13日
    浏览(64)
  • Java获取当前时间

    通过Date类来获取当前时间,比较常用。需要使用Java.util.Date类,速度一般。 通过System类中的currentTimeMillis方法来获取当前时间,无需导入类,速度最快。 此方法优势是不受时区的影响,但是得到结果是时间戳的格式 可以通过代码将时间戳转化为我们可以理解的格式: 转换后

    2024年02月16日
    浏览(42)
  • SqlServer 获取当前系统时间

    SqlServer 获取当前系统时间 获取当前系统时间 SELECT CONVERT(varchar(12),DATEADD(MONTH,0,GETDATE()),23) time –其中用到了DATEADD函数,参数0就代表今天。 CONVERT函数中的23代表样式 –上述结果如下 2. 在存储过程中将系统时间按赋值给变量 declare @time varchar(100) SELECT @time=CONVERT(varchar(12),DATEAD

    2024年02月12日
    浏览(42)
  • Python获取当前时间日期

    时间日期类型在Python中主要有两个模块:time模块 和 datetime模块 time模块: 是基于Unix Timestamp(时间戳)实现的,所能表述的范围被限定在1970-2038年之间; 时间戳: 是指格林尼治时间1970年01月01日00时00分00秒起至现在的总秒数,结果是一个浮点数。 2.1 获取当前时间戳 示例:

    2024年02月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包