我一直在尝试转换日期时间格式,如下所示,但一直遇到此问题。它适用于给定示例的前三个,但对于第四个,它会引发异常。不确定为什么会发生这种异常。
示例:
02-05-2018 12:07:00
02-05-2018 11:56:00
02-05-2018 11:56:00
02-05-2018 14:12:00 (此问题发生)
C#代码:
if (item.ReceivedDate != null && item.ReceivedDate != "")
{
string[] formats = { "HH:mm:ss MM-dd-yyyy","hh:mm MM/dd/yyyy","dd-MM-yyyy hh:mm:ss","MM/dd/yyyy", "MM-dd-yyyy", "dd MMM yy", "dd-MMM-yyyy","dd-MM-yyyy", "MM-dd-yyyy", "d-M-yyyy", "d-MMM-yy", "dd-MMM-yy", "d-MMMM-yyyy","M-d-yyyy h:mm:ss tt", "M-d-yyyy h:mm tt",
"MM-dd-yyyy hh:mm:ss", "M-d-yyyy h:mm:ss","yyyy-MM-dd","dd/MM/YYYY hh:mm","MM/dd/yyyy hh:mm tt","MM/dd/yyyy H:mm","MM/dd/yyyy h:mm tt",
"M-d-yyyy hh:mm tt", "M-d-yyyy hh tt","MM/dd/yyyy hh:mm:ss","MM/dd/yyyy HH:mm","MMMM dd","yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss.fffffffK","ddd, dd MMM yyy HH’:’mm’:’ss ‘GMT’",
"M-d-yyyy h:mm", "M-d-yyyy h:mm","yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss","yyyy MMMM","dddd, dd MMMM yyyy","dddd, dd MMMM yyyy HH:mm:ss",
"MM-dd-yyyy hh:mm", "M-dd-yyyy hh:mm",
"MM-d-yyyy HH:mm:ss.ffffff"};
string DATE = Convert.ToString(item.ReceivedDate);
//DATE = DATE.Replace(' ', '-').Replace('/', '-');
//DATE = DATE.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR"));
string[] NEwDAte = (DATE.ToCharArray()[5] == ' ') ? DATE.Split(' ')[1].Trim().Split('-') : new[] { DATE };
dr["Receiving Date"] = (DATE.ToCharArray()[5] == ' ') ? (NEwDAte[2] + "-" + NEwDAte[0] + "-" + NEwDAte[1]) : DateTime.ParseExact(DATE, formats, CultureInfo.InvariantCulture, DateTimeStyles.None ).ToString("dd/MM/yyyy");
//dr["Receiving Date"] = (DATE.ToCharArray()[5] == ' ') ? (NEwDAte[2] + "-" + NEwDAte[0] + "-" + NEwDAte[1]) : Convert.ToDateTime(item.ReceivedDate).ToString("yyyy-MM-dd");
}
else
{
dr["Receiving Date"] = "";
}
Finaltable.Rows.Add(dr.ItemArray);
帮我解决此问题。感谢
答案 0 :(得分:1)
这是因为前三个是12小时类型,而最后一个类型是24小时类型,所以当系统尝试转换它时,它会看到(14)这不是一小时的当前格式。
您使用的格式为(hh),为12小时。相反,使用(HH)24小时。
为什么要放置所有格式?只需使用DateTime类中的解析方法。
答案 1 :(得分:0)
你试过这个吗?
var d = DateTime.ParseExact("02-05-2018 14:12:00", "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine(d.ToLongDateString());
检查这是否有帮助。
在此处阅读 DateTime.ParseExact 方法:https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx