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

小时数大于11时的DateTime格式化异常问题求助

问题修复:日期格式转换器小时数解析错误

核心问题

你代码里的DateTime.ParseExact(date, "yyyyMMddhhmmss", null)使用了hh格式符,这是12小时制的小时标识(范围01-12),但你的输入是24小时制时间(比如124942里的12),解析时会把正午12点识别为午夜0点,导致最终输出的小时数少12小时。

修复步骤

  1. 将解析格式中的hh替换为HH(24小时制格式符,范围00-23),确保能正确解析24小时制的小时数;
  2. 移除依赖DateTime.Now的字符串替换逻辑——这种写法极不稳定,若输入日期不是当天,替换操作会直接失效。改用DateTime自带的格式化方法获取月份名称,更可靠且简洁。

修复后的代码

public static string DateFormatConverter(string date)
{
    // 用HH解析24小时制小时数
    DateTime result = DateTime.ParseExact(date, "yyyyMMddHHmmss", null);
  
    // 直接通过格式化拼接结果,避免冗余的字符串替换
    return result.ToString("d MMMM yy HH:mm:ss");
}

验证结果

输入20230629124942,输出将变为29 June 23 12:49:42,符合预期。

补充说明

  • 若需要缩写月份名称(如Jun),可将MMMM替换为MMM;
  • 格式化字符串可按需调整,比如要保留星期信息,可加入dddd格式符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:52:12