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

C#中无法将'04/28/2021 04:25p'转换为DateTime类型如何解决

问题原因及修复方案

你的代码存在两处格式匹配规则不匹配的问题:

  • 你使用的HH格式符对应24小时制的小时数值,而你拿到的时间串是12小时制的表述,12小时制的小时需要用小写hh格式符匹配
  • 你使用的tt格式符要求匹配完整的上午/下午标识(en-US文化下为AM/PM),但你拿到的日期字符串中仅包含标识首字母p,单首字母的标识只需要用单个t格式符匹配即可

修正后的代码如下:

var dateValue = DateTime.ParseExact(
    "04/28/2021 04:25p", 
    "MM/dd/yyyy hh:mmt", 
    new CultureInfo("en-US"));

如果第三方接口返回的首字母存在大小写不固定的情况,可以添加DateTimeStyles.IgnoreCase参数避免匹配失败:

var dateValue = DateTime.ParseExact(
    "04/28/2021 04:25p", 
    "MM/dd/yyyy hh:mmt", 
    new CultureInfo("en-US"),
    DateTimeStyles.IgnoreCase);

如果接口可能同时返回首字母缩写和完整的AM/PM标识,可以传入多格式数组兼容两种场景:

var allowedFormats = new string[]
{
    "MM/dd/yyyy hh:mmt",
    "MM/dd/yyyy hh:mm tt"
};
var dateValue = DateTime.ParseExact(
    "04/28/2021 04:25p",
    allowedFormats,
    new CultureInfo("en-US"),
    DateTimeStyles.None);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:54:02