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

C语言中localtime()函数返回日期错误的问题排查

问题分析与修复:localtime()输出时间格式错误

你的代码存在两个关键错误,导致输出不符合预期:

  • 月份数值未修正:struct tm结构体中的tm_mon成员是从0开始计数的(0对应1月,1对应2月,以此类推,11对应12月),直接输出会比实际月份少1。
  • 日期与月份的输出顺序颠倒:你预期格式是mm/dd/yyyy(月/日/年),但代码中printf的参数顺序先传了tm_mday(日),再传tm_mon,导致日和月的位置互换。

修复后的代码如下:

#include <time.h>
#include <stdio.h>
int main(void)
{
    time_t rawtime = time(NULL);
    struct tm *ptime = localtime(&rawtime);
    printf("The time is: %02d/%02d/%04d %02d:%02d:%02d\n",
           ptime->tm_mon + 1, ptime->tm_mday, ptime->tm_year + 1900,
           ptime->tm_hour, ptime->tm_min, ptime->tm_sec);
    return 0;
}

修复说明

  1. 将ptime->tm_mon改为ptime->tm_mon + 1,修正月份的数值偏差;
  2. 调换ptime->tm_mday和ptime->tm_mon + 1的顺序,匹配mm/dd/yyyy的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:45:07