2016-02-22 10 views
0

У меня есть следующие данные в поле даты моего GridView: 2016-01-24T00:00:00 Перед обновлением этого поля я хочу сохранить это значение в формате «dd/MM/yyyy».Ошибка преобразования форматов даты в C#

Для этого я делаю следующее:

IFormatProvider culture = new System.Globalization.CultureInfo("en-US", true); 
string formattedHolDate = DateTime.ParseExact(holDate, "dd/MM/yyyy", culture).ToString("MM/dd/yyyy"); 

Однако при выполнении кода, у меня есть следующее сообщение об ошибке:

String was not recognized as a valid DateTime.

Что такое правильный способ справиться с этим?

+1

Почему вы говорите C#, чтобы ожидать отформатированную строку 'dd/mm/yyyy', затем перейдите в' yyyy-mm-ddThh: mm: ss'? и тогда почему вы ожидаете, что C# прочитает ваш разум и выяснит, что вы ДЕЙСТВИТЕЛЬНО хотели? –

+0

Я знаю, что это был неправильный способ сделать это, но формат должен я использовать в этом случае? – gene

+0

расскажите C# какой формат ваша входная строка ** IS **. форматирование для вывода происходит после того, как вы успешно проанализировали этот ввод. –

ответ

0

Как я читаю ваш вопрос.

2016-01-24T00:00:00 (what you have)

"dd/MM/yyyy" (what you want)

IFormatProvider culture = new System.Globalization.CultureInfo("en-US", true); 
var myDate = DateTime.Parse(holDate); 
string myFormattedDateString = myDate.ToString("dd/MM/yyyy"); 

Вы были некоторые вещи обернулись.

  • Parse = преобразование из строки в дату (или другого объекта в зависимости от реализации)
  • ToString - превращающего от объекта к строковому представлению

Редактировать

В 2016-01-24T00:00:00 на самом деле представляет ISO 8601 представление DateTime, которое вам не нужно ParseExact, всего Parse сделаю.

+0

Я попробовал ваш пример и получил ошибку: 'DateTime pattern 'm' появляется более одного раза с разными значениями. – gene

+0

Я получил его. Спасибо. Я должен был использовать 'yyyy-MM-ddThh: mm: ss' – gene

+0

@gene - я бы просто использовал' Parse' (см. Последнее редактирование). – Igor