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

C#如何解析日期时间字符串「Mar 25 2014 10:15:58:757AM」?尝试后未成功

解决C#中解析「Mar 25 2014 10:15:58:757AM」日期字符串的方案

嘿,这个问题我熟!你之所以解析失败,核心原因是这个日期字符串里的毫秒部分用冒号分隔(而不是C#默认的点号),而且是固定格式的日期,直接用DateTime.Parse这类通用方法大概率会踩坑,得用精准匹配的方法才行。

下面给你两个可靠的解决方案,都能完美适配你给出的日期格式:

方法一:使用DateTime.TryParseExact(推荐,更安全)

这个方法不会因为格式不匹配抛出异常,适合不确定输入是否绝对符合格式的场景,代码示例如下:

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        string targetDateStr = "Mar 25 2014 10:15:58:757AM";
        // 自定义格式字符串,完全匹配你的日期结构
        string format = "MMM dd yyyy hh:mm:ss:ffftt";
        DateTime parsedDateTime;

        // 用InvariantCulture确保英文月份缩写能被正确识别,不受系统区域影响
        if (DateTime.TryParseExact(targetDateStr, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDateTime))
        {
            Console.WriteLine($"解析成功!结果:{parsedDateTime}");
            // 如果你需要单独获取毫秒,可以这样:
            Console.WriteLine($"毫秒部分:{parsedDateTime.Millisecond}");
        }
        else
        {
            Console.WriteLine("解析失败,请检查输入日期的格式是否正确");
        }
    }
}

方法二:使用DateTime.ParseExact(适合确定格式绝对正确的场景)

如果能保证输入的日期字符串格式完全固定,也可以用这个方法,不过格式不匹配时会抛出FormatException,需要用try-catch捕获:

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        string targetDateStr = "Mar 25 2014 10:15:58:757AM";
        string format = "MMM dd yyyy hh:mm:ss:ffftt";

        try
        {
            DateTime parsedDateTime = DateTime.ParseExact(targetDateStr, format, CultureInfo.InvariantCulture);
            Console.WriteLine($"解析成功!结果:{parsedDateTime}");
        }
        catch (FormatException)
        {
            Console.WriteLine("日期格式不匹配,解析失败");
        }
    }
}

关键格式符说明

这里给你拆解一下自定义格式字符串"MMM dd yyyy hh:mm:ss:ffftt"的每个部分:

  • MMM:匹配英文月份缩写(比如Mar、Jan)
  • dd:匹配两位数字的日期(比如25、03),如果要兼容一位日期(比如5)可以改成d
  • yyyy:匹配四位数字的年份(比如2014)
  • hh:匹配12小时制的小时数(因为你的日期有AM标记),如果是24小时制就用HH
  • mm:匹配两位数字的分钟
  • ss:匹配两位数字的秒
  • fff:匹配三位数字的毫秒(对应你字符串里的757)
  • tt:匹配AM/PM标记

重要注意事项

一定要指定CultureInfo.InvariantCulture!如果你的系统区域不是英文,默认的文化可能无法识别Mar这类英文月份缩写,用InvariantCulture可以强制使用英文的日期格式规则,避免解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:38:20