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

如何实现带前导零的dd-mm-yyyy日期格式及日月拼接格式?

解决日期格式化带前导零的问题

一、获取「日+月」格式(如0301)的字符串

直接用标准库的strftime函数是最简洁可靠的方式,它会自动处理前导零,不用手动拼接或修改字符串:

#include <time.h>
#include <stdio.h>

int main() {
    // 获取当前时间戳
    time_t current_time = time(NULL);
    // 转换为本地时间的tm结构体
    struct tm *local_tm = localtime(&current_time);
    
    // 存储格式为DDMM的字符串,缓冲区留足结束符空间
    char ddmm_str[5];
    // %d是两位带前导零的日,%m是两位带前导零的月
    strftime(ddmm_str, sizeof(ddmm_str), "%d%m", local_tm);
    
    // 此时ddmm_str就是"0301"这类格式,可直接存变量使用
    printf("%s\n", ddmm_str);
    return 0;
}

如果你非要手动处理(不推荐),可以用sprintf格式化单个日/月,再拼接:

char day_str[3], mon_str[3], ddmm_str[5];
// %02d表示输出两位整数,不足时自动补前导零
sprintf(day_str, "%02d", local_tm->tm_mday);
sprintf(mon_str, "%02d", local_tm->tm_mon + 1); // tm_mon是0-11,要加1才是实际月份
strcpy(ddmm_str, day_str);
strcat(ddmm_str, mon_str);

注意:itoa不是C标准函数,不同编译器实现可能有差异,不建议跨平台使用。

二、输出dd-mm-yyyy格式的日期

同样用strftime,指定对应的格式符即可:

char full_date[11]; // dd-mm-yyyy共10个字符,加结束符需要11位缓冲区
strftime(full_date, sizeof(full_date), "%d-%m-%Y", local_tm);
printf("%s\n", full_date); // 输出示例:03-01-2024

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:25:27