新闻中心
C++20的日历和时区库怎么用_C++ 中处理日期和时区的现代方法
C++20通过引入日历和时区支持,1. 使用year_month_day可直接操作日期并自动处理进位;2. 通过zoned_time结合current_zone或locate_zone获取本地与UTC时间;3. 可跨时区转换如北京转纽约时间;4. 借助std::format按strftime风格格式化输出;整体提升类型安全与代码清晰度。

C++20 在 <chrono></chrono> 中引入了强大的日历(calendar)和时区(time zone)支持,让处理日期、时间和区域信息变得直观且类型安全。相比旧式 C 风格的 tm 和 localtime,现代方法更清晰、更难出错。
1. 基本日期操作:year_month_day
使用 std::chrono::year_month_day 可以直接表示一个具体的日期,并进行加减、比较等操作。
- 构造日期对象时,可从
sys_days(系统时间点)转换而来 - 支持与整数天数相加减,自动处理月份和年份进位
示例:
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
// 创建一个日期
auto today = year{2025}/3/28;
year_month_day ymd{today};
std::cout << ymd << '\n'; // 输出: 2025-03-28
// 加上10天
ymd += days{10};
std::cout << "10天后: " << ymd << '\n'; // 2025-04-07
}
2. 获取当前本地或UTC时间
C++20 提供了 std::chrono::zoned_time 来绑定时区和时间点,轻松实现本地时间和 UTC 的转换。
-
current_zone()获取程序运行时的本地时区 -
locate_zone("Asia/Shanghai")按 IANA 名称查找特定时区 - 通过 zoned_time 自动完成夏令时调整
示例:获取当前本地时间和对应的 UTC 时间
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
// 获取当前时间点
auto now = system_clock::now();
// 获取本地时区并创建带时区的时间
auto local_time = zoned_time{current_zone(), now};
auto utc_time = zoned_time{"UTC", now};
std::
cout << "本地时间: " << local_time << '\n';
std::cout << "UTC时间: " << utc_time << '\n';
}
3. 跨时区转换
可以将一个时间点从一个时区转换到另一个时区,比如把北京时间转为纽约时间。
PictoGraphic
AI驱动的矢量插图库和插图生成平台
133
查看详情
关键是用 zoned_time 构造时传入目标时区,内部会自动计算偏移量。
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
// 当前时间作为参考
auto now = system_clock::now();
// 北京和纽约时区
auto shanghai = locate_zone("Asia/Shanghai");
auto new_york = locate_zone("America/New_York");
zoned_time beijing{shanghai, now};
zoned_time nyc{new_york, now};
std::cout << "北京: " << beijing << '\n';
std::cout << "纽约: " << nyc << '\n';
}
4. 格式化输出日期时间
C++20 支持使用 std::format 或流输出来格式化时间,语法接近 Python 的 strftime。
- %Y 年, %m 月, %d 日
- %H 小时(24), %M 分钟, %S 秒
- 需包含
头文件(部分编译器需开启 -fconcepts)
示例:
#include <iostream>
#include <chrono>
#include <format>
int main() {
using namespace std::chrono;
auto now = zoned_time{current_zone(), system_clock::now()};
std::cout << std::format("{:%Y年%m月%d日 %H:%M:%S}\n", now);
// 输出如: 2025年03月28日 14:30:22
}
基本上就这些。C++20 的 chrono 日历和时区功能虽然需要编译器较好支持(如 GCC 10+ 或 Clang 14+),但一旦可用,写起时间逻辑来非常清爽,不再依赖第三方库也能准确处理跨时区问题。
以上就是C++20的日历和时区库怎么用_C++ 中处理日期和时区的现代方法的详细内容,更多请关注其它相关文章!
# ai
# c++
# ios
# python
# 潮州专业网站优化推广
# 猫粮的营销与推广策略
# 城阳网络营销推广方法
# 普陀网站推广代运营报价表
# 网站推广和seo优化
# 西安专业网站seo费用
# 栖霞seo优化推广报价方案
# 海南关键词排名优化打造
# 微信开发网站建设
# 汕尾谷歌seo哪家好
# 可直接
# 解决问题
# 可以直接
# 中文网
# 较好
# 相关文章
# 而来
# 也能
# 北京
# 纽约
# 2025
# 2025年
# 格式化输出
# stream
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Go语言中Map值调用指针接收器方法的限制与应对
蛙漫画网页版全站入口 蛙漫热门作品免费浏览
优化大型XML文件解析:基于Python流式处理的内存高效方案
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
J*aScript map 方法中处理循环元素为空数组的策略
C#中解析不规范的HTML为XML 常见的坑与解决办法
在J*aScript中复现SciPy的B样条拟合与求值:关键考量
excel如何生成目录 excel一键生成工作表目录超链接
PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程
服务端验证_j*ascript输入检查
UC浏览器官网入口2025最新 UC浏览器网页版正式地址
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
12306几点到几点不能订票? | 官方最新系统维护时间全解析
mcjs网页版流畅运行 mcjs低配电脑畅玩入口
J*aScript中安全有效地处理localStorage字符串数据
c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学
J*aScript实现动态背景色下的文本与按钮颜色自适应调整
Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择
淘宝网网页版登录入口 淘宝官方网页版快捷登录
Typer应用中灵活处理命令行参数的令牌化与解析
PySpark中高效提取字符串右侧可变长度数字:使用regexp_extract
机器学习中对数变换预测结果的反向还原
J*a里如何使用forEach遍历Map_Map遍历方法说明
小米Civi 4录制视频过暗_小米Civi 4亮度优化
Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】
漫蛙2网页版漫画入口 漫蛙漫画在线官方登录
J*aScript中如何高效提取对象指定属性
浏览器打开即用 美图秀秀网页版入口
解决Flask中Quill编辑器内容提交失败及TypeError的指南
构建轻量级网站内部消息系统:Formspree 集成指南
vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法
机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等
Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问
解决Bootstrap卡片顶部边距导致背景图下移的问题
2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享
小米14应用无法联网原因分析_小米14网络权限修复
QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问
HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解
CSS Box Model与弹性按钮:维持布局稳定的动画实践
Go RPC HTTP服务正确实现与常见陷阱解析
不同用户不同价格! 索尼开启账户个性化定价测试
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
处理Kafka消费者会话超时:深入理解消息处理语义与幂等性
J*aScript数据结构转换:将对象数组按类别分组
PDF文件体积过大处理_PDF压缩技巧详解
CKEditor 5 自定义构建在React应用中渲染失败的调试与解决
苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】


2025-11-23
浏览次数:次
返回列表
cout << "本地时间: " << local_time << '\n';
std::cout << "UTC时间: " << utc_time << '\n';
}