My DateTime.TryParseExact()逻辑拒绝有效格式

My DateTime.TryParseExact()逻辑拒绝有效格式,datetime,c#-4.0,Datetime,C# 4.0,我正在分析C#Winform应用程序中的DateTime值,DateTime.TryParseExact()方法一直拒绝该日期字符串,尽管它显然与提供的格式字符串之一匹配 DateTime tmpDateTime = DateTime.MinValue; return DateTime.TryParseExact("Jan 13 2014 1:11PM", "MMM dd yyyy HH:mmtt", CultureInfo.InvariantC

我正在分析C#Winform应用程序中的DateTime值,DateTime.TryParseExact()方法一直拒绝该日期字符串,尽管它显然与提供的格式字符串之一匹配

    DateTime tmpDateTime = DateTime.MinValue;

        return DateTime.TryParseExact("Jan 13 2014  1:11PM", "MMM dd yyyy HH:mmtt",            CultureInfo.InvariantCulture, DateTimeStyles.None, out tmpDateTime);
我的两个想法是

  • 这个月需要大写吗
  • HH插槽是否需要两位数字?尝试将1更改为01
  • 另外,我不确定它是否相关,但在您的示例中,日期和时间之间有一个额外的空格,为了一致性,您可能应该删除它。

    我的两个想法是

  • 这个月需要大写吗
  • HH插槽是否需要两位数字?尝试将1更改为01

  • 另外,我不确定它是否相关,但在您的示例中,日期和时间之间有一个额外的空格,为了一致性起见,您可能应该删除它。

    我认为您非常接近。试试这个:

    return DateTime.TryParseExact("Jan 13 2014 1:11PM", "MMM dd yyyy h:mmtt", CultureInfo.InvariantCulture, DateTimeStyles.None, out tmpDateTime);
    

    我觉得你很接近。试试这个:

    return DateTime.TryParseExact("Jan 13 2014 1:11PM", "MMM dd yyyy h:mmtt", CultureInfo.InvariantCulture, DateTimeStyles.None, out tmpDateTime);
    

    我认为你在第一个参数中的年份和时间之间有一个额外的空间。此外,
    h:mmtt
    是您希望在第一个参数中的年份和时间之间有一个额外的空间。另外,
    h:mmtt
    是你想要的,老实说,如果我不能控制我从服务器上读取的日期时间值格式,我就无法使用上面提供的格式。是的,我知道它来自服务器,我无法访问源代码,但也许你会尝试解析它,首先提取时间和日期,然后应用额外的0(如果需要),然后尝试解析日期和时间,然后让你知道,老实说,我无法控制从服务器读取的日期时间值中的格式,我在上面提供的格式无法使它工作。是的,我知道它来自服务器,我没有访问源代码的权限,但也许你会尝试解析它,首先提取时间和日期,然后应用额外的0(如果需要),然后尝试解析日期和时间,然后让你知道