Причина, по которой вы получаете это, в точности соответствует исключению: строка имеет неправильный формат, скорее всего причина в том, что на машине, выполняющей сравнение, установлена другая дата и время, установленная на yyyy-MM-dd.
Если вы извлекаете это из базы данных, а возвращаемое значение имеет дату-время (или если вы знаете, что row.Cells [6] является полем DateTime, должно работать следующее:
System.Globalization.CultureInfo enUS = new System.Globalization.CultureInfo("en-US");
if (row.Cells[6] != null)
DateTime.ParseExact(((DateTime)row.Cells[6]).ToString("yyyy-MM-dd"), "yyyy-MM-dd", enUS);
Вопрос, однако, почему вы хотите изменить формат, чтобы отобразить его в форме, если это так, то вы можете просто отобразить его следующим образом:
if (row.Cells[6] != null)
TextBox1.Text = ((DateTime)row.Cells[6]).ToString("yyyy-MM-dd");
РЕДАКТИРОВАТЬ Учитывая, чтоrow.Cells [6] является строкой, вам всегда нужно будет знать, какой формат строки, и если вы это сделаете, это будет так просто:
Со временем:
DateTime ParsedDate = DateTime.ParseExact(row.Cells[6].ToString(), "dd-MM-yyyy h:mm", enUS);
Удаление времени с последующим разбором:
DateTime ParsedDate = DateTime.ParseExact(row.Cells[6].ToString().Substring(0,10), "dd/MM/yyyy", enUS);
, а затем вывод его в нужном формате будет простым:
TextBox1.Text = ParsedDate.ToString("yyyy-MM-dd");