我在使用日期时间格式解析字符串值时遇到问题。
这是解析日期时间格式的方法。
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'
我错过了什么? 亲切的问候
答案 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日。