Лучший способ привязать DateTime к отдельным полям даты и времени?

#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)
 }
}