[c#] 날짜 만 표시하고 시간은 표시하지 않음

MVC 면도기에서는 이와 같이 데이터베이스에 현재 날짜를 넣습니다.

model.Returndate = DateTime.Now.Date.ToShortDateString();

데이터베이스 필드가 datetime 데이터 유형이고 현재 날짜를 문자열 형식으로 변환하고 있기 때문에 작동하지 않습니다. 어떻게해야합니까? 날짜를 mm / dd / yyyy hh : mm : ss 시간 형식이 아닌 mm / dd / yyyy 형식으로 원하기 때문에 문자열 형식을 사용하고 있습니다.

편집하다:

컨트롤러에는

var model = new ViewModel();
model.ReturnDate = DateTime.Now;            
return PartialView("PartialView", model);  

부분보기에서 나는

@Html.EditorFor(model => model.Returndate)

이것은 날짜와 시간을 함께 표시하는 곳입니다 … 날짜 만 표시하고 싶습니다. 시간이 아닙니다. 이 편집이 더 잘 설명되기를 바랍니다.



답변

열 유형이 SQL에서 DateTime이면 통과 여부를 저장합니다.

날짜를 제대로 저장하는 것이 좋습니다.

model.ReturnDate = DateTime.Now;

표시해야 할 때 형식을 지정합니다.

@Html.Label(Model.ReturnDate.ToShortDateString())

또는 EditorFor를 사용하는 경우 :

@Html.EditorFor(model => model.ReturnDate.ToShortDateString())

또는

@Html.EditorFor(model => model.ReturnDate.ToString("MM/dd/yyyy"))

모델에 속성을 추가하려면 다음 코드를 추가하세요.

public string ReturnDateForDisplay
{
    get
    {
       return this.ReturnDate.ToString("d");
    }
}

그런 다음 PartialView에서 :

@Html.EditorFor(model => model.ReturnDateForDisplay)

편집하다:

안녕하세요 여러분,이 답변에 대해 ‘If you ‘re using EditorFor’라는 말로 표현하려는 값 유형에 대한 EditorFor 템플릿이 필요하다는 것을 분명히하고 싶습니다.

편집기 템플릿은 MVC에서 반복적 인 컨트롤을 관리하는 멋진 방법입니다.

http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/

위에서 한 것처럼 String과 같은 순진한 유형에 사용할 수 있습니다. 그러나 더 복잡한 데이터 유형에 대한 입력 필드 세트를 템플릿으로 만드는 데 특히 유용합니다.


답변

이 시나리오를 직접 처리해야했습니다.이 작업을 수행하는 정말 쉬운 방법을 찾았습니다. 다음과 같이 모델에 속성에 주석을 달기 만하면됩니다.

[DataType(DataType.Date)]
public DateTime? SomeDateProperty { get; set; }

날짜 선택기에서도 시간 버튼을 숨 깁니다.

이 답변이 조금 늦으면 죄송합니다.)


답변

TextBox에 표시하려는 경우 작동합니다.

@Html.TextBoxFor(m => m.Employee.DOB, "{0:dd-MM-yyyy}")


답변

datebase의 날짜 / 시간은 형식이 지정된 버전 이 아닙니다 . 날짜 / 시간 자체 일뿐입니다. 데이터베이스에서 값을 추출 할 때 해당 날짜 / 시간 을 표시 하는 방법 은 다른 문제입니다. 나는 당신이 정말로 원하는 것을 강력히 의심합니다.

model.Returndate = DateTime.Now.Date;

또는 아마도

model.Returndate = DateTime.UtcNow.Date;

당신은 SQL 서버 스튜디오 또는 무엇이든을 사용하여 데이터베이스를 보면 예, 당신은 지금 자정를 볼 수 있습니다 -하지만 관련이없는, 그리고 데이터베이스의 날짜를 가져오고 사용자에게 표시 할 때, 다음 당신은 관련 서식을 적용 할 수 있습니다 .

편집 : 편집 한 질문과 관련하여 문제는 모델에있는 것이 아니라보기를 지정하는 방법입니다. 다음과 같이 사용해야합니다.

@Html.EditorFor(model => model.Returndate.Date.ToString("d"))

짧은 날짜 패턴에 대한 표준 날짜 및 시간 형식 지정d 자는 어디에 있습니까 (현재 문화적 설정을 고려함을 의미 함).

그것은 내가 반복해서 말했던 부분입니다 . 사용자에게 날짜 / 시간을 표시 할 때 시간이없는 날짜로 형식을 지정하는 시간입니다.

편집 : 이것이 작동하지 않으면 형식 문자열 또는 이와 유사한 형식으로 모델 또는보기를 장식하는 방법이 있어야합니다. 나는 정말로 MVC 사람은 아니지만 이것을 선언적으로 수행하는 좋은 방법 이 있어야 할 것 같습니다 …


답변

다음과 같이 ViewModel을 수정할 수 있습니다.

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)]


답변

다음 ToString과 같이 사용자 지정 날짜 시간 형식을 적용 할 수 있습니다 .

DateTime.Now.Date.ToString("MM/dd/yyyy");

DateTime.ToString형식 패턴 에 대한 자세한 내용 은 여기여기 에서 찾을 수 있습니다 .

편집 : 질문 편집 후 다른 제안과 마찬가지로보기에 날짜 형식을 적용해야합니다.

model.Returndate = DateTime.Now.Date;

@Html.EditorFor(model => model.Returndate.Date.ToString("MM/dd/yyyy"))


답변

Razor에서는 확실하지 않지만 ASPX에서는 다음을 수행합니다.

 <%if (item.Modify_Date != null)
  {%>
     <%=Html.Encode(String.Format("{0:D}", item.Modify_Date))%>
<%} %>

Razor에도 비슷한 것이있을 것입니다. 바라건대 이것은 누군가를 도울 것입니다.