2014-01-18 1 views
0

У меня возникают некоторые проблемы при форматировании DateTime в Asp.net. Я хотел, чтобы дата отображалась как 18/1 // 2014 вместо 18/1/2014 12.00. Вот код:Формат DateTime в SQL

DataTable dt = new DataTable(); 
     dt.Columns.Add("totalQuantity"); 
     dt.Columns.Add("deliveryDate"); 

     for (int count = 0; count < catSumList.Count; count++) 
     { 
      DataRow dr = dt.NewRow(); 
      dr["totalQuantity"] = catSumList[count].productQuantity; 
      dr["deliveryDate"] = catSumList[count].deliveryDate; 
      dt.Rows.Add(dr); 
     } 

     string[] deliveryDate = new string[dt.Rows.Count]; 
     decimal[] totalQuantity = new decimal[dt.Rows.Count]; 
     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      totalQuantity[i] = Convert.ToInt32(dt.Rows[i][0]); 
      deliveryDate[i] = dt.Rows[i][1].ToString("dd/M/yyyy", CultureInfo.InvariantCulture); 
     } 

lcCategory.Series.Add(new AjaxControlToolkit.LineChartSeries { Data = totalQuantity }); 
     lcCategory.CategoriesAxis = string.Join(",", deliveryDate); 
     lcCategory.ChartTitle = string.Format(categoryName); 
     lcCategory.Visible = true; 

Однако, это дает мне сообщение об ошибке на этой линии:

deliveryDate[i] = dt.Rows[i][1].ToString("dd/M/yyyy", CultureInfo.InvariantCulture); 

Сообщение об ошибке Нет Метод перегрузки ToString не принимает 2 аргумента. Интересно, есть ли другой способ отформатировать его? Мой тип данных для доставкиДата в базе данных - DateTime. Заранее спасибо.

ответ

3

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

deliveryDate[i] = ((DateTime)dt.Rows[i][1]).ToString("dd/M/yyyy", CultureInfo.InvariantCulture); 

Свойство Rows возвращает object который вам нужно бросить.

+0

Теперь он возвращает мне конкретный бросок не сообщение об ошибке действует –

+0

В этом случае в базе данных не имеют поля даты и времени для этого свойства. Это уже какой-то nvarchar. Что возвращает 'dt.Rows [i] [1] .GetType()' в ваш отладчик? –

+0

О, да, это тип данных даты. Извините, мой плохой –

1

Использование:

deliveryDate[i] = ((DateTime)dt.Rows[i[1]). 
ToString("dd/M/yyyy",CultureInfo.InvariantCulture); 
+0

Он возвращает мне конкретное действие, недействительное сообщение об ошибке –