Добрый день, есть List, при попытки вывести все его элементы листа после дат еще добавляется время: "01.03.2017 0:00:00". Вопрос: можно ли изменить формат хранения дат в List на "01.03.2017" (без времени) или это возможно только при выводе элементов с помощью MessageBox.Show(item.ToShortDateString()); ?
Тип DateTime не хранит формат своего отображения. Он просто хранит дату в виде целого числа типа Int64.
Формат отображения задаётся при выводе данных пользователю. Многие визуальные компоненты имеют встроенные возможности формата вывода показываемых данных.
Например, имеется список:
var list = new List<DateTime>();
Если привязать его к ListBox
listBox.DataSource = list;
дата/время будут выводиться в формате по умолчанию, то есть просто вызовом метода ToString.
У листбокса можно задать формат вывода:
listBox.FormattingEnabled = true;
listBox.FormatString = "dd.MM.yyyy";
После чего будет показываться только дата, без времени.
Похожим образом задаётся формат, например, в DataGridView: DefaultCellStyle.Format.
Если данные нужно показывать в компоненте, который не имеет настроек формата или передавать их на обработку куда-то ещё, то можно конвертировать их в строковое представление нужного формата.
var list2 = list.Select(dt => dt.ToShortDateString()).ToList();
Теперь, при привязке к ListBox с форматом по умолчанию, данные будут в желаемом виде, ведь это просто строки.
На представленном скриншоте три ListBox. В левом DateTime отображается в формате по умолчанию, с временем. В среднем использована установка формата, к правому привязан список типа string, с заранее конвертированными значениями. Как видим, результат в обоих идентичный.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости