Поскольку dt.Rows[1][5]
возвращает object
, и мы хотим применить формат , мы должны привести его к интерфейсу IFormattable
:
using System.Globalization;
...
// "M/d/yyyy" - Month / Day / Year in this order; e.g. "9/14/2019"
TB_Birthday.Text = (dt.Rows[1][5] as IFormattable)
?.ToString("M/d/yyyy", CultureInfo.CurrentCulture);
Я поставил ?.ToString()
вместо .ToString()
, чтобы не выдавать исключение, если dt.Rows[1][5]
равно null
, но распространить null на TB_Birthday.Text
: TB_Birthday.Text
будет иметь пустое значение Text
.В случае .net 4.0 против 2013 (см. Комментарии ниже) мы должны поставить
TB_Birthday.Text = (dt.Rows[1][5] as IFormattable)
?.ToString("M/d/yyyy", CultureInfo.CurrentCulture);
Редактировать: Откуда берется часть времени.
Когда мы ставим
TB_Birthday.Text = dt.Rows[1][5].ToString();
, мы читаем dt.Rows[1][5]
в штучной упаковке DateTime
.Структура DateTime
состоит из Date
и Time
частей.В вашем случае Time
часть равна все нули .Однако при форматировании с помощью .ToString()
будет использоваться формат по умолчанию, который в вашем случае включает Time
часть.Итак, у вас есть
12:00:00 9/14/2019
Время всех нулей - полночь (12:00:00
в 12-часовом формате)