2013-11-19 4 views
-1

У меня есть некоторые недопустимые значения даты в моих данных. Я хочу ввести неверные значения даты с допустимой датой, какой будет лучший алгоритм для этого? дляImpute Недопустимые значения

например
Date 
-------------------- 
Day/Month/Year 
2/15/2001 
Missing-Value 
3/-1/1999 
32/2/1998 
-1/2/2007 
1/1/-1999  

ответ

4

Использование DateTime.TryParse(). Затем вы можете проверить, была ли дата действительной или нет.

string dateString = "32/11/2013"; 
DateTime date = new DateTime(); 
if (!DateTime.TryParse(dateString, out date)) 
{ 
    date = myDefaultDate; //replace the invalid date with a default one 
    //or with the current date 
    //date = DateTime.Now.ToShortDateString(); 
} 
+1

После этого, как я могу заменить эти недопустимые данные? – user1056466

+0

Вы спрашиваете, как определить часть недопустимой даты или как заменить всю недействительную дату? –

+0

после проверки того, что я хочу заменить эту недопустимую дату на действительную дату ... – user1056466

0

Вы могли бы сделать что-то вроде:

List<string> your_input_dates = new List<string>(); 
DateTime temp_date; 
foreach (var date in your_input_dates) { 
    var date_valid = DateTime.TryParse(date, out temp_date) 
    if (date_valid) 
    // do something with valid date, using temp_date variable 
    else 
    // do something else, prompt for error, or just continue 
} 
0

Вы не упоминаете, как вы собираетесь найти действительную дату от недопустимого один. Итак, я только что заменил недействительные текущим временем.

var list = new List<string> 
       { 
        "11-03-2013", 
        "11-03-2013", 
        "11-03-2013", 
        "11-04-2013", 
        "11-04-2013", 
        "11-04-2013" 
       }; 

DateTime d; 
IEnumerable<string> valid = list.Select(s => DateTime.TryParse(s, out d) ? s : DateTime.Now.ToShortDateString()); 
Смежные вопросы