2013-08-27 4 views
2

У меня есть строка в этом формиата: 19/8/1988Datetime дает ошибку при конверсии

примечание: String DateOfBirth=" 19/8/1988"

Когда я использую Datetime.parse(DateOfBirth) это дает мне invalid dateformat error.

Я также не в состоянии сделать это в cdate(DateOfBirth)

Когда я вхожу в строку в формате мм/дд/гггг т.е. 8/19/1988, то это не дает мне ошибку.

Пожалуйста, помогите мне преобразовать строку в дату в формате mm/ddd/yyyy.

+0

Попробуйте 'TryParseExact' вместо' Parse' http://msdn.microsoft.com/en-us/library/h9b85w22.aspx – wudzik

+0

'DateTime.ParseExact' Просто выполните поиск stackoverflow. Вы найдете миллионы ответов. – I4V

+0

Это также давало мне такую ​​же ошибку, поэтому я поставил вопрос –

ответ

5

LOWERCASE mm означает минуту вместо месяца, вам нужно использовать прописные буквы M (один символ).

Но вам также необходимо использовать ParseExact с CultureInfo.InvariantCulture. В противном случае ваша текущая культура используется для получения разделителя даты, который не обязательно / (во многих странах это .).

Так это работает с любой культурой:

DateTime.ParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture) 

Demo

The "/" Custom Format Specifier

Если вы хотите проверить данную дату-строку, которую вы можете использовать DateTime.TryParseExact:

DateTime dt; 
if(DateTime.TryParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) 
{ 
    // success, dt contains the correct date now 
} 
else 
{ 
    // not a valid date 
} 
+0

Thanx tim, это сработало для меня. –

2

Обратите внимание, что у вас есть место до того времени, дат, вам необходимо удалить эту строку перед тем разбором в DateTime, используя данного формат

var date = DateTime.ParseExact(DateOfBirth.Trim(), "d/M/yyyy", CultureInfo.InvariantCulture); 

если у вас есть несколько форматов времени даты затем

var date = DateTime.ParseExact(DateOfBirth.Trim(), new string[] {"d/M/yyyy","M/d/yyyy"} , CultureInfo.InvariantCulture, DateTimeStyles.None); 
1

Я знаю, какая причина для вас ошибка, системный datetime по умолчанию, принимающий формат данных в формате США (мм/дд/гггг), изменит этот формат в вашей системе, goto control panel --> regional and languages --> formats --> additional settings--> дата, чтобы изменить желаемый формат, это вручную решает вашу проблему или иным образом программно решается таким образом

DateTime.ParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture) 
1

Net разработчик, вот код его в VB и должен быть преобразован в C#

Dim time As DateTime = DateTime.Now 
Dim format As String = "dd/MM/yyyy" 
' you can set format to both "dd/MM/yyyy" or "d/MM/yyyy" 

MsgBox(time.ToString(format)) 

дайте мне знать, если это помогает.

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