2010-09-17 3 views
1

я получить эту дату: 9/20/2010 3:32:32 PMПроблема с датой типа

мне нужно преобразовать DateTime.

я попробовать:

DateTime DateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM", "dd/M/yyyy", CultureInfo.InvariantCulture); 

, но я получаю ошибку: String was not recognized as a valid DateTime.

в моем компьютере регион: Hebrew (Israel) dd/MM/yyyy for short date and hh:mm for short time

, как это исправить?

благодарственные-х заранее

+0

Возможный дубликат [я получаю дату в неправильном формате - нужна помощь] (http://stackoverflow.com/questions/3721731/i-get-date-in-wrong-format-need-help) –

ответ

4

Как это может работать man.You преобразовывают в «дд/мм/гггг» & положить месяц, как 20.In ваш вопрос дд/M/гггг wrong.It полюбит дд/мм/гггг.

По умолчанию используется формат MM/DD/yyyy.

простой способ сделать .......

DateTime DateFrom = DateTime.Parse("9/20/2010 3:32:32 PM"); 

, если вы хотите, чтобы обеспечить определенный формат, так что используйте как это

DateTime DateFrom = DateTime.ParseExact("20/09/2010 3:32:32 PM", "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture); 

Надеюсь это работает.

+0

@PrateekSaluja: Это не сработает, поскольку он пытается проанализировать дату и время как дату. –

+0

По умолчанию используется только «MM/dd/yyyy», если в настройках вашей культуры указано это. – cjk

+0

Сэр Я попробовал DateTime DateFrom = DateTime.Parse («20.09.2010 3:32:32»); И это дало мне выход. – PrateekSaluja

0

Похоже исходная строка даты в формате США (т.е. м/дд/гггг). Попробуйте заменить третий параметр на new CultureInfo("en-US")

+0

Это не происходит чтобы помочь, когда он явно ожидает «dd/M/yyyy» в строке формата. –

11

Если вы получаете «9/20/2010 3:32:32 PM» в качестве строки, а затем пытаетесь проанализировать ее, как если бы она находилась в «dd/MM/yyyy «формат явно неправильный - это попытка использовать месяц из 20. Вы также разбираете часть строки - вам нужно либо обрезать строку, либо предоставить полный формат.

Попробуйте это:

DateTime dateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM", 
             "M/dd/yyyy h:mm:ss tt", 
             CultureInfo.InvariantCulture); 

Обратите внимание, что с помощью такого рода строгого разбора будет работать только если вы можете гарантировать, что это будет всегда быть формат. Откуда вы берете эти данные?

+0

черт возьми, вы слишком быстро для меня! Был готов опубликовать тот же комментарий :-) Редактировать - просто протестировано ...не работает – Xander

+0

спасибо за помощь, но все равно такая же ошибка – Gold

+1

ему нужно два 't' в конце формата .. ie "M/dd/yyyy h: mm: ss tt" – Xander

0
DateTime dateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM", "M/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture); 

Работа для меня

+0

p.s. кредит Джону Скиту за то, что он был первым (я просто немного изменился) – Xander

0

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

DateTime dateFrom = DateTime.Parse(dateString, CultureInfo.InvariantCulture);

является более компактным и более ясным.

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