2012-07-01 3 views
5

Если у меня есть тезисы общие SQL допустимые даты в C# струны:Преобразование общего формата времени SQL в C# (все варианты)?

(каждая дата может быть в другом порядке внутри), например, :

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

Я хочу, чтобы преобразовать строку даты в DateTime (C#). (я хочу, чтобы возможность конвертировать все форматы из списка выше)

в то время, когда для синтаксического анализа требуется 3! комбинаций, есть ли лучшее решение?

+1

3! всего 6 ... Однако вы могли бы просто разделить по пространству и выяснить, есть ли каждый фрагмент - альфа, 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()' do? – abatishchev

 Смежные вопросы

  • Нет связанных вопросов^_^