当前位置:网站首页 > 时间管理与高效工作 > 正文

电脑时间钟代码(显示时间代码)



目录

1.引用

2.chrono库

2.1.Duration

2.2.Clock

2.3.TimePoint

2.4.Calendar(c++20)

3.ctime库

4.常见用法

4.1. 获取当前系统时间戳

4.2.计算时间间隔

4.3.格式化输出

4.4.字符串转化为时间戳

4.5.时间戳转为time_point类型

4.6.字面量使用

5.总结


        unix timestamp(时间戳): 时间戳是计算中广泛使用的日期和时间表示形式。它通过自1970年1月1(Unix 纪元)00:00:00 UTC以来经过的秒数(秒是毫秒、微妙、纳秒的总称)来测量时间,没有因闰秒而进行调整。

        C++中处理时间的库主要包括和

库是C++11引入的一个标准库,专门用于处理时间点、时间间隔和时钟操作。它提供了高精度的时间点和时长表示,以及时间相关的函数和操作。C++20新增Calendar。

        主要包含以下四种类型:

  • Duration:表示一个时间间隔,单位可以是秒、毫秒、微秒等。
  • Time Point:表示一个时间点,通常基于某个时钟。
  • Clock:提供当前时间,通常有三种时钟类型:系统时钟()、高精度时钟()和稳定时钟()。
  • Calendar(c++20)

        Duration(时间间隔):表示一段时间的长度,这个类模板是时间间隔的抽象表示,可以存储任何时间单位的间隔,比如秒、毫秒、分钟等。 允许程序员进行时间间隔的计算,比如加法、减法、比较等,并且可以与时间点(如 )结合使用来表示具体的时间。

         模板类接受两个参数:

  1. rep:表示时间间隔的数值类型,通常是整数类型,如 、 或 。
  2. period:表示时间间隔的单位,是一个编译时常量表达式,通常是  类型。 是一个模板类,用于表示两个整数的比率。标准库中定义了几个常用的  类型的别名,如 (表示纳秒,即10^-9秒)、(表示微秒,即10^-6秒)、(表示毫秒,即10^-3秒)、(表示秒)、(表示分钟)、(表示小时)等。
 

为了方便使用,标准库为常见的时间单位提供了  的特化版本:

  • 纳秒(nanoseconds):
  • 微秒(microseconds):
  • 毫秒(milliseconds):
  • 秒(seconds):
  • 分钟(minutes):
  • 小时(hours):

这些特化版本简化了时间单位的表示,使得程序员无需手动指定  和  参数。

示例如下:

 

在这个例子中,我们定义了两个  对象,一个表示5秒,另一个表示200毫秒。然后,我们使用  将5秒转换为毫秒,并输出结果。

  • 时钟(clock):表示一个可以测量时间的设备,提供了当前时间点(now)和时间点之间的差值(time_since_epoch)等方法。chrono库提供了三种时钟,分别是:
    • 系统时钟(system_clock):表示当前系统范围的实时日历时钟,通常与系统的钟同步。它可以用于表示日期和时间,以及与其他系统交互。
    • 稳定时钟(steady_clock):表示一个单调递增的时钟,不受系统时间的调整或修改影响。它可以用于测量时间间隔,以及实现定时器和延时等功能。
    • 高分辨率时钟(high_resolution_clock):表示一个具有最高精度的时钟,通常是系统时钟或稳定时钟的别名(using high_resolution_clock = system_clock;)。它可以用于测量极短的时间间隔,以及实现性能分析等功能。
  • now --成员函数,放回当前时钟的时间点

1) std::chrono::system_clock

它表示系统范围的实时时钟。这个时钟类提供了访问系统当前时间点的功能,并且允许将时间点转换为  类型(通常用于表示日历时间)以及进行时间点之间的算术运算。使用  可以获取当前的系统时间点,返回类型是 。

示例代码:

 

在这个例子中,我们获取了当前的系统时间点,并将其转换为  类型,然后格式化为人类可读的日期和时间格式输出。接着,我们创建了一个表示当前时间点之后10秒的新时间点,并同样进行了格式化输出。需要注意的是,这里的10秒后的时间计算是简单的秒数相加,并没有考虑诸如闰秒等复杂的时间调整情况。

2) std::chrono::steady_clock

它表示一个稳定的、单调递增的时钟。这个时钟类的主要特点是它不受系统时间调整(如用户手动更改系统时间)的影响,因此非常适合用于测量时间间隔,例如性能分析、计时器等场景。使用  可以获取当前的稳定时间点,返回类型是 。

示例如下:

 

在这个例子中,我们使用  来测量一个循环计算代码段的执行时间,并将结果转换为毫秒后输出。由于  的稳定性和单调性,我们可以确保测量得到的时间间隔是准确的。

3) std::chrono::steady_clock

它旨在提供一个具有最高可用精度的时钟。然而,需要注意的是, 并不总是代表实际的最高分辨率时钟,而是代表在当前实现中可用的最高分辨率时钟。换句话说,它的行为可能因编译器和平台而异。使用  可以获取当前的高精度时间点,返回类型是 。

示例如下:

 

在这个例子中,我们使用  来测量一个循环计算代码段的执行时间,并将结果转换为毫秒后输出(尽管我们实际上是以纳秒为单位测量的,但为了方便理解,我们将其转换为毫秒)。然而,需要注意的是,由于  的精度可能受到硬件和操作系统的限制,因此测量得到的时间可能会有一定的偏差。

  • 时间点(time_point):表示一个特定时刻,由一个时钟和一个时间间隔组成。例如,表示系统时钟的当前时间点,表示稳定时钟的当前时间点,等等。chrono库还提供了一些常用的时间点别名,如,,等。
  • time_since_epoch 返回到epoch的时间间隔Duration
  • 日期类,用来对日期时间进行比较。
 

库提供了与时间相关的类型和函数,包括对类型的操作,以及转换时间和日期的函数。它使用类型来表示时间点,并提供了将时间转换为字符串的函数。

  1. 核心类型
    • :用于表示从程序启动以来经过的CPU时间。
    • :表示从Unix纪元(1970年1月1日00:00:00 UTC)以来的秒数。
    • 结构:表示本地或格林威治标准时间的结构。
  2. 常用函数
    • :获取当前时间,返回类型的值。
    • :将类型的时间转换为本地时间结构。
    • :将类型的时间转换为UTC时间结构。
    • :将结构转换为字符串形式。
    • :格式化时间。
  3. 常见用法
    • 获取当前时间并转换为本地时间:
    • 格式化输出时间:

 

请注意, 成员表示自1900年以来的年数,因此需要加上1900来得到实际的年份。同样地, 成员表示月份(从0开始计数),因此需要加上1来得到实际的月份。

 
 
 
 
 
 

       std::chrono时间库在不同平台上都具备良好的兼容性,无论是Windows、Linux还是其他操作系统,都可以使用该库进行时间处理,使代码具备良好的可移植性。该库提供了丰富的时间单位和精度选项,适应不同场景下的时间计算需求。无论是秒、毫秒、微秒还是纳秒的时间单位,都可以很方便地应用于代码中。而且std::chrono时间库提供了不同类型的时钟,如系统时钟(system_clock)、稳定时钟(steady_clock)和高分辨率时钟(high_resolution_clock),可以根据具体需求选择合适的时钟类型。

进一步学习和参考C++ std::chrono时间库的推荐资源:

  1. 官方文档:可以查阅C++标准库的官方文档,其中包含了std::chrono时间库的详细说明和示例代码。官方文档可以帮助深入了解每个类、函数和成员的用法和语义。
  2. C++ Reference:C++ Reference是一个权威的C++参考网站,提供了std::chrono时间库的详细文档和示例代码。可以在该网站上查找特定类、函数或成员,并了解它们的用法和示例。
  3. 推荐书籍:《C++ Concurrency in Action: Practical Multithreading》和《Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14》。
到此这篇电脑时间钟代码(显示时间代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 我的世界设置时间指令怎么用(我的世界里调时间的指令)2025-04-07 19:27:06
  • max30100工作原理(max30100原理图)2025-04-07 19:27:06
  • 神兽刷新时间指令代码(神兽刷新时间指令代码怎么用)2025-04-07 19:27:06
  • 时间指令(我的世界加速时间指令)2025-04-07 19:27:06
  • 神兽刷新时间指令是什么(神兽刷新概率指令)2025-04-07 19:27:06
  • max30102接线图(max30102工作原理)2025-04-07 19:27:06
  • 我的世界设置时间指令(我的世界设置指令执行范围)2025-04-07 19:27:06
  • 莫队算法复杂度(莫队时间复杂度)2025-04-07 19:27:06
  • 查看神兽刷新时间指令(查询神兽还有多久刷新的指令100)2025-04-07 19:27:06
  • max319中文资料(max319工作原理)2025-04-07 19:27:06
  • 全屏图片