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

UTC日期字符串与Unix时间戳互转及时间偏移实现方法

UTC时间字符串与Unix时间戳转换(加2小时需求实现)

方案1:使用<ctime>库实现(兼容C++所有标准版本)

该方案兼容性最高,可在绝大多数旧编译环境下运行:

#include <iostream>
#include <ctime>
#include <string>

int main() {
    const std::string utc_str = "2021-11-15 12:10";
    struct tm tm_val = {};

    // 1. 解析UTC时间字符串为tm结构
    strptime(utc_str.c_str(), "%Y-%m-%d %H:%M", &tm_val);
    // 2. 转换为秒级Unix时间戳,注意`timegm`是UTC时区专用,不要用本地时区的mktime
    time_t timestamp = timegm(&tm_val);
    std::cout << "原始时间戳: " << timestamp << std::endl;

    // 3. 执行加2小时操作,和示例逻辑一致
    timestamp += 60 * 60 * 2;
    std::cout << "加2小时后时间戳: " << timestamp << std::endl;

    // 4. 新时间戳转回UTC时间字符串,`gmtime`是UTC时区专用,不要用本地时区的localtime
    struct tm* new_tm = gmtime(&timestamp);
    char buf[20] = {0};
    strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M", new_tm);
    std::cout << "转换后UTC字符串: " << buf << std::endl;

    return 0;
}
  • 注意:Windows环境下部分编译器没有内置strptime,可自行引入轻量替代实现,或使用下方C++20方案

方案2:使用C++20 <chrono>库实现(代码更简洁,无原生函数兼容问题)

C++20对chrono库做了解析、格式化、时区相关的增强,代码更安全易读:

#include <iostream>
#include <chrono>
#include <string>
#include <format>

int main() {
    const std::string utc_str = "2021-11-15 12:10";
    std::chrono::sys_time<std::chrono::minutes> tp;

    // 1. 直接解析UTC时间字符串为系统时钟时间点
    std::chrono::parse("%Y-%m-%d %H:%M", utc_str, tp);
    // 2. 转换为秒级Unix时间戳
    auto timestamp = std::chrono::system_clock::to_time_t(tp);
    std::cout << "原始时间戳: " << timestamp << std::endl;

    // 3. 执行加2小时操作,两种写法等效
    tp += std::chrono::hours(2);
    // 也可以用 timestamp += 60*60*2;
    timestamp = std::chrono::system_clock::to_time_t(tp);
    std::cout << "加2小时后时间戳: " << timestamp << std::endl;

    // 4. 直接格式化为目标格式UTC字符串
    std::string new_utc_str = std::format("{:%Y-%m-%d %H:%M}", tp);
    std::cout << "转换后UTC字符串: " << new_utc_str << std::endl;

    return 0;
}

输出示例

两种方案运行输出一致:

原始时间戳: 1636978200
加2小时后时间戳: 1636985400
转换后UTC字符串: 2021-11-15 14:10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:45:02