我正在编写一个小程序,它获取 CSV 文件并将它们更新到数据库中。其中一个文件有一个date-of-birth
列,并且该列的格式并不总是相同。
我已经开始编写代码来检查整个列表以确定格式,因为单个日期可能不明确(例如 '10/12/12'、'10/12/2012'、'12/10/2012'、'2012 /12/10' 可以是同一日期)。我假设给定列表的格式是一致的。
这是我到目前为止的代码,
private static string GetDateFormat(string[] date)
{
DateTime result;
CultureInfo ci = CultureInfo.InvariantCulture;
string[] fmts = ci.DateTimeFormat.GetAllDateTimePatterns();
bool error;
date = date.Where(x => !string.IsNullOrEmpty(x)).ToArray();
foreach (string a in fmts)
{
error = false;
for (int i = 0; i < date.Count(); i++)
{
if (!DateTime.TryParseExact(date[i], a, ci, DateTimeStyles.AssumeLocal, out result))
{
error = true;
}
}
if (error == false)
{
return a;
}
}
throw new CsvToImsException("Error: Date Format is inconsistant or unrecognised");
}
'4/5/2012'
但由于每个列表中的小问题(一个列表的日期设置为而不是'04/05/2012'
,另一个有'4/05/2012 0:00'
等) ,我无法让它与我拥有的任何示例日期一起使用。
这一定是一个普遍的问题。有没有人为这个应用程序编写了足够广泛的库?我正在考虑按'/'
字符拆分日期以进行解析,但是有没有更简单的方法?