форматирование столбца даты и времени в наборе данных

У меня есть набор данных, который заполняется чтением файла excel. Набор данных хранит данные из Excel.

Дата в наборе данных в формате 2\2\2009 00:00:00, но мне нужно преобразовать формат данных в 2\2\2009 . Я хочу изменить формат всех данных в этом конкретном столбце.


person Jebli    schedule 25.07.2009    source источник
comment
Является ли столбец текстовым столбцом или столбцом DateTime?   -  person Keltex    schedule 25.07.2009


Ответы (4)


Вот один из способов:

foreach (DataRow row in yourDataTable)
{
    DateTime dt = DateTime.Parse(row["Date"].ToString());
    row["Date"] = dt.ToShortDateString();
}

Предполагается, что столбец «Дата» — это просто текстовое поле, а не поле DateTime.

person MusiGenesis    schedule 25.07.2009
comment
Вы опередили меня до кнопки отправки... У меня был тот же ответ - person Jeff Fritz; 25.07.2009
comment
У меня есть столбец даты и времени в наборе данных, и я хочу изменить формат данных только этого столбца. - person Jebli; 25.07.2009
comment
Ха! Прелесть в том, что мне не нужно заботиться о том, чтобы мой код вообще компилировался. знак равно - person MusiGenesis; 25.07.2009
comment
@Jebli: в этом случае вам не нужно перебирать таблицу и что-либо менять. Просто используйте метод ToShortDateString() всякий раз, когда вам нужно отобразить значение. Форматирование — это не то, что вы делаете с объектом DateTime, это то, что вы делаете, когда хотите отобразить его значение. - person MusiGenesis; 25.07.2009
comment
Привет, я попробовал ваш код, но когда значение сохраняется после форматирования набора данных в тот же набор данных снова, значение отображается как 02.02.2009 00:00:00. Почему я пытаюсь изменить формат, я делаю массовое обновление и обновляет столбец базы данных в этом формате. - person Jebli; 25.07.2009
comment
Является ли столбец в вашей базе данных столбцом даты/времени (я не знаю, что это за БД)? Если это так, я не думаю, что вам нужно что-то менять, если только вы вообще не хотите временную часть. Если вам нужна только часть даты, вы можете (в зависимости от того, какая это база данных) вместо этого использовать столбец DATE (в отличие от столбца, в котором хранится дата и время). - person MusiGenesis; 25.07.2009

Вы можете настроить вывод с помощью шаблона, если он является объектом DateTime в нужном вам формате "2\2\2009".

string output1 = dt.ToString(@"mm\\dd\\yyyy");
string output2 = dt.ToString("mm/dd/yyyy"); //did you mean this?
person omgtitb    schedule 25.07.2009
comment
я хочу, чтобы исходный формат данных в наборе данных был изменен на формат 26.02.2009 - person Jebli; 25.07.2009

Значение или столбец DateTime не имеет формата. Это просто двоичные данные.

Где вы хотите, чтобы отформатированный вывод отображался? Вот где вы должны применить строку формата. Например, если вы хотите, чтобы он отображался в столбце ASP.NET DataGrid, вы должны установить для свойства DataFormatString BoundColumn значение «мм/дд/гггг».

person John Saunders    schedule 25.07.2009
comment
Привет, я использую массовую загрузку, в этом случае как мне изменить формат данных в наборе данных и присвоить значение - person Jebli; 25.07.2009
comment
Покажите код, который вы используете для массовой загрузки. Кроме того, какой тип столбца в пункте назначения? Нварчар? - person John Saunders; 25.07.2009
comment
использование (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection.ConnectionString)) { for (int count = 0; dsSourceColumn.Tables[1].Rows.Count › count; count++) { bulkCopy.ColumnMappings.Add(sourcecolumn, sourcecolumn); } } В моем случае имена исходной и целевой колонок будут одинаковыми. - person Jebli; 25.07.2009
comment
Я имел в виду столбец назначения datetime или nvarchar? - person John Saunders; 25.07.2009
comment
извините. Столбец назначения был varchar. - person Jebli; 26.07.2009

Попробуй это. Это будет работать

var result = from a в ds.Tables[0].AsEnumerable() select new[] { Convert.ToDateTime(a[0]).ToString("dd/MM/yyyy") };

person Ajsatis    schedule 27.02.2017
comment
пожалуйста, добавьте небольшое описание, объясняющее ответ. - person jjj; 27.02.2017