C #: DateTime конвертировать - PullRequest
5 голосов
/ 05 мая 2011

Я получаю дату в формате:

18/04/2011 4:57:20 PM

Метод DateTime.Parse() не обращается к нему.

Есть ли способ заставить его преобразовать 18/04/2011 4:57:20 PM в Date объект April 18, 2011?

Ответы [ 8 ]

9 голосов
/ 05 мая 2011

Это не похоже на стандартный формат. Дата en-GB, время en-US. Из-за этого я бы порекомендовал вам использовать DateTime.ParseExact и передать формат:

DateTime parsed = DateTime.ParseExact("18/04/2011 4:57:20 PM", 
                                      "dd/MM/yyyy h:mm:ss tt", 
                                      CultureInfo.InvariantCulture);
7 голосов
/ 05 мая 2011

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

DateTime dateValue = 
   DateTime.ParseExact(stringDateValue, "dd/MM/yyyy h:mm:ss tt", 
        CultureInfo.InvariantCulture);

Затем вы можете использовать DateTime.ToString (format) , чтобы извлечь форматированное строковое значение:

resultStringDateValue = dateValue.ToString("MMM dd, yyyy");
3 голосов
/ 05 мая 2011

Вы можете использовать ParseExact или лучше TryParseExact (который не генерирует исключение при сбое), с помощью этих двух методов вы можете передать описание поставщика формата в качестве параметра:

DateTime.ParseExact(strDate, "dd/MM/yyyy HH:mm:ss", null);
3 голосов
/ 05 мая 2011

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

DateTime dt = DateTime.ParseExact(dateString, "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
1 голос
/ 05 мая 2011

Вы должны использовать Convert.ToDateTime (String)

http://msdn.microsoft.com/es-es/library/xhz1w05e(v=VS.90).aspx

Вы должны увидеть, принимает ли Convert.ToDateTime формат, в котором вы хотите его ввести.

1 голос
/ 05 мая 2011

Вам нужно DateTime.ParseExact

0 голосов
/ 05 мая 2011

Ваш формат даты: мм / дд / гггг, месяца нет 18

, попробуйте

DateTime.Parse("04/18/2011 4:57:20PM").ToShortDateString();
0 голосов
/ 05 мая 2011

Вы пробовали это

DateTime.Now.ToString("MMM dd, yyyy")
...