привязка данных текстового поля c # с форматом даты - PullRequest
0 голосов
/ 21 сентября 2018

У меня Textbox ограничено из базы данных сервера SQL

тип столбца Дата.поэтому в этом столбце

нет времени, когда привязка данных из базы данных к этому Textbox показывает дату со временем, это похоже на время по умолчанию или что-то еще, потому что оно всегда имеет одно и то же значение = 12:00:00

TB_Birthday.Text = dt.Rows[1][5].ToString();

Во-первых, откуда эта дата?последний Как удалить это время и показать только дату?

Я использую .net4 с 2013

enter image description here

1 Ответ

0 голосов
/ 21 сентября 2018

Поскольку 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-часовом формате)

...