You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Howard Hinnant的C++ date库格式化UTC Zulu格式时间字符串

实现方法

你不需要手动拆分时分秒字段,Howard Hinnant的date库内置了格式化语法,可以直接生成符合要求的Zulu时间格式字符串:

  1. 使用Howard date库的原生写法
    首先不要将时间点floor<days>,这个操作会丢失时分秒精度,才导致你需要硬编码时间字段。正确写法如下:
#include "date/date.h"
#include <chrono>
#include <string>

// 生成UTC Zulu时间字符串的逻辑
auto get_utc_zulu_time() -> std::string {
    const auto now = std::chrono::system_clock::now();
    return date::format("%FT%TZ", now);
}

其中格式符的含义:

  • %F:是%Y-%m-%d的缩写,对应YYYY-MM-DD格式的日期
  • %T:是%H:%M:%S的缩写,对应HH:MM:SS格式的24小时制时间
  • 末尾的Z直接符合Zulu时间的标识要求
  1. C++20及以上标准库写法
    该date库已经被并入C++20的std::chrono标准库,不需要引入第三方依赖就可以实现相同效果:
#include <chrono>
#include <format>
#include <string>

auto get_utc_zulu_time() -> std::string {
    const auto utc_now = std::chrono::utc_clock::now();
    return std::format("{:%FT%TZ}", utc_now);
}

扩展说明

如果需要带毫秒、微秒等更高精度的时间,只需要调整格式符即可,比如要输出带3位毫秒的格式,把格式符改为"%FT%T.%3NZ"即可,生成的字符串样式为2018-11-01T15:32:56.123Z。

内容的提问来源于stack exchange,提问作者johnco3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:36:04