2014-01-10 4 views
0

У меня есть строки любит это:Разбор строки, содержащие значения времени до значения DateTime

' 630AM' , '1234PM' , '1000 ' 

Эти значения сохраняются в моей базе данных.

И я хочу проанализировать их до формата даты, в разделе «Дата» мне все равно, может добавить фиктивную дату. Один из способов - просто иметь кучу команд if-else и команд для обработки строк, но я чувствую, что мы должны как-то использовать DateTime.TryParseExact и сделать это более чистым способом.

Что вы предлагаете делать по этим линиям?

+0

ли эти времена какие-либо стандартные форматы? В противном случае вам будет трудно. «TryParseExact» работает только в том случае, если вы знаете формат: http://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact(v=vs.110).aspx –

+0

@Michael_B: Спасибо, что вы означает «иметь стандартные форматы»? Образцы, которые я разместил, представляют собой образцы, показанные выше. Данные поступают так же. –

+0

Стандартные форматы, означающие, что они одинаковые 3-4 варианта приходят каждый раз. '#### AM' или '### AM' или '####' или '###'? –

ответ

1

Это, как я хотел бы справиться с этим:

public DateTime convert(string date) 
{ 
    int hour = int.Parse(date.Substring(0, 2)); 
    int minute = int.Parse(date.Substring(2, 2)); 
    if (hour < 12 && date.Substring(4, 2) == "PM") 
    { 
     hour = hour + 12; 
    } 

    return new DateTime(2014, 1, 10, hour, minute, 0); 
} 
+0

Спасибо, я также написал что-то вроде этого: DateTime.TryParseExact (sampleTime, форматы, новая CultureInfo («en-US»), DateTimeStyles.AllowWhiteSpaces, результат); а затем для этих форматов параметры дали ему эти значения «hhmmtt», «hhmm» в настоящее время тестируют как ваши, так и мои –

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