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

C语言中将%b %d %H:%M格式字符串转换为time_t类型的实现方法

实现方案

你不需要修改原有代码,只需要在原有逻辑后新增转换代码即可,核心通过strptime解析固定格式的时间字符串,再用mktime转为time_t类型:

// 原有代码完全保留,无需任何修改
time_t t = time(NULL);
struct tm *tm = localtime(&t);
char time[100];
strftime(time, 100, "%b %d %H:%M", tm);

// 新增转换逻辑
struct tm parse_tm = {0};
// 按照你指定的格式解析时间字符串
strptime(time, "%b %d %H:%M", &parse_tm);
// 补全年份(你的时间格式未携带年份,默认复用当前系统年份)
parse_tm.tm_year = tm->tm_year;
// 可选处理跨年场景:如果解析出的时间晚于当前时间,默认归为上一年
time_t target_time = mktime(&parse_tm);
if (target_time > t) {
    parse_tm.tm_year -= 1;
    target_time = mktime(&parse_tm);
}
// target_time 即为转换得到的 time_t 类型变量

注意事项

  • 你的时间格式未包含年份,默认复用当前系统年份,如果有特殊年份需求可自行修改parse_tm.tm_year的赋值逻辑,tm_year为1900年到目标年份的偏移值。
  • Windows原生库没有提供strptime实现,可自行引入兼容版本的strptime代码,无需调整原有生成时间字符串的逻辑。
  • 转换逻辑复用了localtime的时区信息,和你原有代码的时区逻辑完全一致,不会出现时间偏移问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:45:03