CSVファイルを取得してデータベースに更新する小さなプログラムを作成しています。ファイルの1つに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");
}
しかし、各リストの小さな問題のために、私が持っているサンプルの日付のいずれかでそれを動作させることができません(1つのリスト'4/5/2012'
の代わりに日付が設定されて'04/05/2012'
いる、別のリストには日付が設定されている'4/05/2012 0:00'
など)。
これは一般的な問題であるに違いありません。このアプリケーションに十分な広さのライブラリを作成した人はいますか?解析のために日付を文字で分割することを検討しています'/'
が、もっと簡単な方法はありますか?