2015-04-29 6 views
0

В gridview, показывающей дату на этикетке и дату получения с этой метки.Ошибка получения Строка не была признана действительной DateTime

Datetime Date; 
Label date = gvOrderExecuted.Rows[0].FindControl("lblDate") as Label; 
Date = Convert.ToDateTime(date.Text); 

Этот код выдает ошибку

'Строка не был признан действительным Дата Время'.

Я передаю значение даты, как «3/31/2015»

+0

Какова ценность 'date.Text' и что такое' CurrentCulture'? Не могли бы вы отладить свой код и рассказать нам? –

+1

сообщение об ошибке понятно ... ваша строка недействительна DATETIME – puko

+0

Вы также можете попробовать DateTime.Parse() и DateTime.TryParse(), но, как говорили другие комментаторы, ваша строка недействительна. – TheEdge

ответ

4

Convert.ToDateTime метод использует DateTime.Parse метод явно с CurrentCulture настройки, если вы не обеспечивают IFormatProvider.

Похоже, что M/dd/yyyy не standard date and time format вашего CurrentCulture, и именно поэтому он бросает FormatException.

Вы можете использовать методы DateTime.ParseExact или DateTime.TryParseExact, чтобы указать свой собственный формат строки;

string s = "3/31/2015"; 
DateTime dt; 
if(DateTime.TryParseExact(s, "M/dd/yyyy", CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out dt)) 
{ 
    Console.WriteLine(dt); // 31/03/2015 00:00:00 
} 

"/" separator имеет особое значение, как заменить меня с текущей культурой или поставкой даты культуры сепаратором. Это означает, что когда вы разбираете строку с этим разделителем, ваш синтаксический анализ может привести к ошибке даже, если ваша строка и формат точно совпадают. Вы можете избежать этого символа как '/', не беспокоясь об этом.

string s = "3/31/2015"; 
DateTime dt = DateTime.ParseExact(s, "M'/'dd'/'yyyy", CultureInfo.CurrentCulture); 
+1

Я думаю, что мы должны создать законченный ответ на такие вопросы. Мы продолжаем отвечать на одни и те же вещи, никогда не получая * все * нюансы прямо в первом посте. –

+0

@PanagiotisKanavos Аминь к этому. Если у вас есть что-то на уме, чтобы создать CW-вопрос о разборе 'DateTime', я с удовольствием помогу :) –