解析日期时间格式有问题。字符串无法识别

时间:2018-02-05 12:06:16

标签: c# datetime

我在使用日期时间格式解析字符串值时遇到问题。

这是解析日期时间格式的方法。

  internal static DateTime ParseDateTime(string dateTimeString, string[] formats)
    {
        try
        {
            DateTime dateStamp = DateTime.ParseExact(dateTimeString,
                formats, CultureInfo.CurrentCulture, DateTimeStyles.None);
            return dateStamp;
        }
        catch (Exception exe)
        {
            var message = $"dateTimeString: '{dateTimeString}', '{string.Join(",", formats)}'.";
            Utility.log(message);
            throw;
        }
    }

我传递的格式如下所示。

 public static string[] DateTimeFormats => new string[]
    {
        "dd-MM-yyyy",
        "MM/dd/yyyy",
        "dd/MM/yyyy",
        "M/d/yyyy",
        "d.M.yyyy",
        "dd.MM.yyyy",
        "MM/dd/yyyy",
        "M/d/yyyy",
        "yyyy/MM/dd",
        "dd-MM-yyyy HH:mm tt"
    };

我记录了异常,这是导致错误的值。

'20-06-2017 12:00 AM'

我错过了什么? 亲切的问候

1 个答案:

答案 0 :(得分:3)

正如我在评论中所写(并且公平地说,Jon Skeet在我之前写道),"dd-MM-yyyy HH:mm tt"应该是"dd-MM-yyyy hh:mm tt"

HH格式字符串是使用24小时制的小时数,而
使用12小时制时,hh格式字符串需要数小时。

但是,我认为你在这里有一个更大的问题,那就是你可能会错误地解析一些字符串 您的格式数组中有一些可以在某些日期互换的格式 - 日期小于13的任何日期都可以使用"MM/dd/yyyy""dd/MM/yyyy"进行解析 - 这意味着01/02/2018可能是2018年1月2日或2018年2月1日。