新闻中心

C++20的日历和时区库怎么用_C++ 中处理日期和时区的现代方法

2025-11-23
浏览次数:
返回列表
C++20通过引入日历和时区支持,1. 使用year_month_day可直接操作日期并自动处理进位;2. 通过zoned_time结合current_zone或locate_zone获取本地与UTC时间;3. 可跨时区转换如北京转纽约时间;4. 借助std::format按strftime风格格式化输出;整体提升类型安全与代码清晰度。

c++20的日历和时区库怎么用_c++ <chrono> 中处理日期和时区的现代方法

C++20 在 <chrono></chrono> 中引入了强大的日历(calendar)和时区(time zone)支持,让处理日期、时间和区域信息变得直观且类型安全。相比旧式 C 风格的 tmlocaltime,现代方法更清晰、更难出错。

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 PictoGraphic

AI驱动的矢量插图库和插图生成平台

PictoGraphic 133 查看详情 PictoGraphic

关键是用 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应用中渲染失败的调试与解决  苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】 

搜索