2013-02-27 2 views
-1

Я знаю, что этот вопрос задан раньше и разрешен с использованием различных методов.Формат даты «dd/MM/yyyy» до «yyyy/MM/dd»

Я преобразовываю значение из строки в DateTime.

В течение всего проекта я использовал ту же самую Культурную информацию, все строки которой были преобразованы в дату, когда они были выполнены с использованием Convert.ToDateTime(), но теперь есть одно текстовое поле, которое отказывается конвертировать.

Я попытался:

string date = "27/02/2013"; 
string startdated = (Convert.ToDateTime(date)).ToString("yyyy/MM/dd"); 

(. Преобразует значения в дату и изменяет его обратно жала в моем требуемом формате Это отлично работает на все остальное)

даже

Datetime dt = Convert.toDateTime(date); doesn't work 
DateTime.ParseExact(date, "yyyy/MM/dd", format); doesn't work 

И все дают мне ту же ошибку "String не была признана действительной DateTime.". Я получаю свое значение даты из текстового поля с помощью расширителя каландра ajax (CalendarExtender.Format = "dd/MM/yyyy", сделанного для показа, это также работает везде, т.е. "dd/MM/yyyy" для отображения и "yyyy/MM/dd "для процедуры), за исключением этого окончательного значения, которое просто не изменится. Everthing сделано через мою машину без внешних серверов

ответ

3

Ваша дата date = "27/02/2013"; и текущий формат DateTime.ParseExact) является "yyyy/MM/dd", Это должно быть:

"dd/MM/yyyy" 

Так следующий код должен работать ,

string date = "27/02/2013"; 
DateTime dt = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture); 

Вы также можете использовать формат "d/M/yyyy", который будет заботиться о одинарной или двойной датой цифра/месяц.

+0

в мой момент разочарования я СУИ типизированных мой DateTime.ParseExact (дата, "дд/мм/гггг", CultureInfo.InvariantCulture); вопрос здесь. извинения, у меня есть это как «dd/MM/yyyy», и это терпит неудачу. С тех пор я удалил свои расширители календаря и заменил их календарю выбора даты по умолчанию, который просто использует календарь в качестве дисплея, а его значение передается как требуемый «yyyy/ММ/дд». не совсем то, что я хотел, но он работает – Domo

+0

@ Domo, бывает :), но вы можете попробовать один формат цифр «d/M/yyyy» в предыдущем сценарии, может быть, у вас есть один и несколько цифр день/месяц. Но рад, что ваша проблема несколько разобрана. – Habib

+0

thanx для подсказки. У меня были одинарные и двузначные цифры – Domo

4

Ваша строка ввода не совпадает с форматом, указанным в параметре DateTime.ParseExact.

Для этой работы

DateTime.ParseExact(date, "yyyy/MM/dd", format); 

Вы должны ввести дату в месяц/день формат года/. Но ваша строка находится в день/месяц/год.

Это должно работать лучше.

string date = "27/02/2013"; 
DateTime parsedDate = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture); 
Смежные вопросы