现代 C++ 编程实战
吴咏炜
前 Intel 资深软件架构师
35791 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 56 讲
现代 C++ 编程实战
15
15
1.0x
00:00/00:00
登录|注册

44 | Chrono:C++里的时间和日期

你好,我是吴咏炜。
从 C++11 开始,C++ 标准就引入了全新的 chrono(来自古希腊语 χρόνος,意为时间)库,解决了时间方面的典型痛点。而到了 C++20,chrono 库进一步得到了强化,弥补了原先的一些不足,并增加了日期方面的支持。这个 chrono 库,在之前的课程中我也零星地用过,但一直没有系统地进行描述。今天,我就来完整讨论一下 C++ 里的时间和日期。

C++11 之前的时间和日期

在 C++11 之前,程序员当然也有处理时间和日期的需要,但那时,如果不用第三方库的话,我们只能使用 C 带来的陈旧功能。下面的代码演示了标准库提供的基本功能:
time_t t = time(nullptr);
cout << "Seconds since epoch time: "
<< t << '\n';
cout << "ctime result: "
<< ctime(&t);
tm* tm_ptr = localtime(&t);
cout << "Local time as ctime: "
<< asctime(tm_ptr);
tm_ptr = gmtime(&t);
cout << "UTC time as ctime: "
<< asctime(tm_ptr);
char buffer[80];
strftime(buffer, sizeof buffer,
"%F %T %Z", tm_ptr);
cout << "Formatted time: "
<< buffer << '\n';
cout << "Wrong mktime result: "
<< mktime(tm_ptr) << '\n';
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. C++11之前的时间和日期处理功能存在诸多问题,包括缺乏标准的时区支持、易用性问题、缺少高精度时间获取接口等。 2. C++11引入了chrono库,包括时钟、时间点和时长等基本概念,解决了之前时间和日期处理功能的不足。 3. C++11提供了三种不同的时钟类型:system_clock(系统时钟)、steady_clock(稳定时钟)和high_resolution_clock(高精度时钟)。 4. C++20进一步强化了chrono库,解决了C++11之前存在的问题,增加了日期方面的支持。 5. C++20提供了对日期的支持,可以方便地用年月日表达日期,也可以写出一些以前不可能的日期表达式。 6. C++20引入了sys_days类型,可以进行日期和时长的运算,提供更灵活的日期处理功能。 7. C++20的时间库改进包括基本易用性改进和日期支持。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《现代 C++ 编程实战》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部