2012-07-01 3 views
5

C#で、私は論文をお持ちの場合は、一般的なSQL有効な日付文字列一般的なSQL時刻形式をC#(すべてのバリエーション)に変換しますか?

(各日付が内部の異なる順序にすることができ)、例えば:

01 feb 2010 
feb 01 2010 
2010 01 feb 
... 
... 

私はDateTime(C#の)に文字列の日付を変換したいです。 (私は上のリストからすべての形式を変換する能力が欲しい)

正確に解析するのに私には3!の組み合わせが必要ですが、もっと良い解決策がありますか?私はそれを得たと思う

+1

3!しかし、あなたはちょうどスペースを分割し、各チャンクがアルファ、4桁、または2桁であるかどうかを調べることができます... Btw - これはSQLとどのように関連していますか? –

+0

ええ、私が知っていることは何ですか?私は何かをしなければならないことを知っています...しかし、私は他の解決策があるかどうかを確認するだけです。 –

+0

年は4桁、月は3桁、日は2桁です。マッチするグループで正規表現を使用し、正確な単一の解析を行うことができます。 –

答えて

2

... enter image description here

string[] str = new[] { "01 feb 2010","feb 01 2010","2010 01 feb","2010 feb 01","feb 2010 01" }; 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");      
for (int i = 0; i < str.Length; i++) 
{ 
    DateTime t = DateTime.Parse(str[i], culture); 
    t.Dump(); 
} 
+1

'CurrentThread.CurrentCulture'を設定(汚染)する必要はありません。 'Parse(...、culture)'で十分でしょう。 –

+0

@HenkHolterman yep ...私がそれを表示すると、それは私に表示されるように(私のコンピュータはdd/MM/yyyyにある)注文を変更します:01/02/2010 ....しかし、ただ表示(これは無関係です) –

+0

'Dump()'は何をしますか? – abatishchev