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

如何在C++中将h:m:s时间格式转换为hh:mm:ss格式?

如何在C++中将h:m:s格式转换为hh:mm:ss格式

下面给你几个适合新手的实现方法,代码都带注释,容易理解:

方法1:用C风格格式化函数(简单易上手)

通过sscanf解析原始时间字符串,再用sprintf格式化输出,不足两位的数字自动补0。

#include <cstdio>
#include <string>

int main() {
    const char* raw_time = "5:4:9";
    int hour, minute, second;
    // 从字符串里提取时、分、秒,忽略冒号分隔符
    sscanf(raw_time, "%d:%d:%d", &hour, &minute, &second);
    
    char formatted[9]; // 存储hh:mm:ss(8个字符+结束符)
    // %02d表示输出两位整数,不足补0
    sprintf(formatted, "%02d:%02d:%02d", hour, minute, second);
    
    printf("转换结果:%s\n", formatted); // 输出 05:04:09
    return 0;
}

方法2:纯C++流操作风格

用C的字符串流解析和格式化,不需要依赖C风格函数,更贴合C语法习惯。

#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>

int main() {
    std::string raw_time = "5:4:9";
    int hour, minute, second;
    char colon; // 用来读取冒号分隔符
    
    std::istringstream input_stream(raw_time);
    // 按格式读取时分秒
    input_stream >> hour >> colon >> minute >> colon >> second;
    
    std::ostringstream output_stream;
    // 设置填充字符为0,输出宽度为2
    output_stream << std::setfill('0') 
                  << std::setw(2) << hour << ":"
                  << std::setw(2) << minute << ":"
                  << std::setw(2) << second;
    
    std::string formatted_time = output_stream.str();
    std::cout << "转换结果:" << formatted_time << std::endl; // 输出 05:04:09
    return 0;
}

注意:std::setw只对紧随其后的输出生效,所以每个时间分量都要设置一次;std::setfill是持久生效的,设置一次即可。

方法3:用C++11+的时间专用格式化工具

如果你的编译器支持C++11及以上版本,可以用std::put_time专门处理时间格式化,适合后续需要扩展时间操作的场景。

#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <ctime>

int main() {
    std::string raw_time = "5:4:9";
    int hour, minute, second;
    char colon;
    
    std::istringstream input_stream(raw_time);
    input_stream >> hour >> colon >> minute >> colon >> second;
    
    std::tm time_struct = {};
    time_struct.tm_hour = hour;
    time_struct.tm_min = minute;
    time_struct.tm_sec = second;
    
    std::ostringstream output_stream;
    // %H表示24小时制的小时(两位),%M是分钟,%S是秒
    output_stream << std::put_time(&time_struct, "%H:%M:%S");
    
    std::string formatted_time = output_stream.str();
    std::cout << "转换结果:" << formatted_time << std::endl; // 输出 05:04:09
    return 0;
}

内容的提问来源于stack exchange,提问作者Quân Nguyễn Minh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:23:19