#c# #asp.net-mvc #asp.net-mvc-3
#c# #asp.net-mvc #asp.net-mvc-3
Вопрос:
Я использую класс модели со значением DateTime. Я хотел бы отобразить это свойство в виде двух полей: одно для даты, а другое для времени.
Каков наилучший способ сделать это? Есть предложения?
Заранее спасибо!
Комментарии:
1. Поля должны быть двусторонними или отображать только?
Ответ №1:
Проверьте это сообщение в блоге о разделении даты и времени от Hanselman.
Ответ №2:
Отформатируйте дату и время в 2 разных свойствах.
сначала получить формат даты и времени как «гггг / ММ / дд», второй формат как «ЧЧ: мм: сс»
Комментарии:
1. лучше использовать date . ToShortTimeString() и date . ToShortDateString() поскольку они отформатированы в соответствии с текущей культурой
Ответ №3:
Все, что вам нужно сделать, это использовать два выражения формата: одно для извлечения времени, а другое для извлечения даты.
Привязать это к полю даты:
txtDateBox.Text = date.ToString("dd MMM yyyy");
Привязать это к временному интервалу:
txtTimeBox.Text = date..ToString("HH:mm:ss");
(Предположим, что ваша переменная называется date).
Комментарии:
1. лучше использовать
date.ToShortTimeString()
иdate.ToShortDateString()
, поскольку они отформатированы в соответствии с текущей культурой. Но вопрос касается MVC, и я уверен, что он хочет использовать строго типизированные HtmlHelpers.
Ответ №4:
Вы могли бы сделать что-то вроде этого (я не запускал код, это всего лишь идея):
private DateTime MyModelDateTime;
public string date
{
get
{
return MyModelDateTime.ToString("MM/dd/yyyy");
}
set
{
string pattern = "MM/dd/yyyy HH:mm:ss";
string timeValue = MyModelDateTime.ToString("HH:mm:ss");
string dateTimeValue = value " " timeValue;
MyModelDateTime = DateTime.ParseExact(dateTimeValue, pattern, null, DateTimeStyles.None)
}
}
public string time
{
get
{
return MyModelDateTime.ToString("HH:mm:ss");
}
set
{
string pattern = "MM/dd/yyyy HH:mm:ss";
string dateValue = MyModelDateTime.ToString("MM/dd/yyyy");
string dataTimeValue = dateValue " " value;
MyModelDateTime = DateTime.ParseExact(dateTimeValue, pattern, null, DateTimeStyles.None)
}
}