当前位置

网站首页> 程序设计 > 代码分享 > C/C++ > 浏览文章

C++中的日期和时间操作

作者:小梦 来源: 网络 时间: 2024-08-13 阅读:

在C++中,日期和时间的操作主要由C++标准库中的chrono和ctime库提供支持。本文将详细介绍这两个库的常见日期和时间操作。

  1. chrono库

chrono库是C++标准库中专门用于处理日期和时间的库。它提供了一个高精度的时钟和一组类型和函数,用于表示和操作时间间隔、日期和时间点。

1.1 时间间隔

时间间隔表示两个时间点之间的时间差。在chrono库中,时间间隔由duration类型表示,可以表示纳秒、微秒、毫秒、秒、分钟、小时、天等时间间隔。

示例:

 
c
#include <chrono> #include <iostream> using namespace std::chrono; int main() { // 计算1秒的纳秒数 auto ns = duration_cast<nanoseconds>(seconds(1)).count(); std::cout << ns << " ns" << std::endl; // 计算1分钟的毫秒数 auto ms = duration_cast<milliseconds>(minutes(1)).count(); std::cout << ms << " ms" << std::endl; return 0; }

输出:

 
1000000000 ns 60000 ms

1.2 时间点

时间点表示具体的日期和时间。在chrono库中,时间点由time_point类型表示,可以表示从一个特定时刻开始的时间间隔。

示例:

 
c
#include <chrono> #include <ctime> #include <iostream> int main() { // 获取当前时间点 auto now = std::chrono::system_clock::now(); // 将时间点转换为time_t类型 auto tt = std::chrono::system_clock::to_time_t(now); // 将time_t类型转换为struct tm类型 auto tm = *std::localtime(&tt); // 输出当前时间 std::cout << "current time: " << std::put_time(&tm, "%Y-%m-%d %H:%M:%S") << std::endl; return 0; }

输出:

 
sql
current time: 2023-04-01 10:15:32

1.3 时间操作

chrono库还提供了一些常用的时间操作函数,例如时间点加上或减去一个时间间隔、计算两个时间点之间的时间间隔等。

示例:

 
c
#include <chrono> #include <iostream> int main() { // 获取当前时间点 auto now = std::chrono::system_clock::now(); // 计算1小时后的时间点 auto later = now + std::chrono::hours(1); // 计算两个时间点之间的时间间隔 auto diff = later - now; // 输出结果 std::cout << "now: " << std::chrono::system_clock::to_time_t(now) << std::endl; std::cout << "later: " << std::chrono::system_clock::to_time_t(later) << std::endl; std::cout << "diff: " << std::chrono::duration_cast<std::chrono::seconds>(diff).count() << " seconds" << std::endl; return

0; }

输出:

 
yaml
now: 1659378902 later: 1659382502 diff: 3600 seconds
  1. ctime库

ctime库提供了一些与时间和日期有关的函数,例如获取当前时间、将时间转换为字符串等。

2.1 获取当前时间

在ctime库中,获取当前时间的函数是time函数,它返回自1970年1月1日0时0分0秒以来经过的秒数。

示例:

 
c
#include <ctime> #include <iostream> int main() { // 获取当前时间 time_t t = time(NULL); // 输出结果 std::cout << "current time: " << t << std::endl; return 0; }

输出:

 
sql
current time: 1659379014

2.2 时间转换

ctime库还提供了一些将时间转换为字符串的函数,例如asctime函数将struct tm类型的时间转换为字符串。

示例:

 
c
#include <ctime> #include <iostream> int main() { // 获取当前时间 time_t t = time(NULL); // 将时间转换为struct tm类型 struct tm *tm = localtime(&t); // 将struct tm类型的时间转换为字符串 char buf[80]; strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tm); // 输出结果 std::cout << "current time: " << buf << std::endl; return 0; }

输出:

 
sql
current time: 2022-09-01 14:10:14

综上所述,C++中的日期和时间操作主要由chrono和ctime库提供支持。使用chrono库可以方便地进行时间间隔、时间点的计算和操作,而ctime库提供了一些将时间转换为字符串的函数。通过灵活地组合这些函数,我们可以方便地实现各种日期和时间操作。

相关阅读

热点阅读

网友最爱