2

DateTime 개체를 사용하고 문자열을 반환하는보기 도우미를 만들려고했습니다. DateTime 개체가 새 DateTime (0)과 같은 경우이 함수는 빈 문자열을 반환합니다. 그렇지 않으면 형식화 된 DateTime 문자열을 반환합니다. 이것은 지금까지 작동합니다. 매개 변수로 :DateTime 문자열 또는 빈 문자열을 표시하는 기능

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime, string format) 
{ 
    return dateTime.ToString().Equals(new DateTime(0).ToString()) 
     ? String.Empty 
     : dateTime.ToString(format); 
} 

를하지만 제대로 작동하지 않습니다

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime) 
{ 
    return dateTime.ToString().Equals(new DateTime(0).ToString()) 
     ? String.Empty 
     : dateTime.ToString("{0:g}"); 
} 

문제는 내가 형식 ("{g 0}")에 합격하고 싶은 것이있다. 내가보기

<%: Html.DateTimeOrEmpty(Model.StopDate, "{0:g}") %> 

와 함수에서 도우미를 호출하는 경우 "형식"에 대한 매개 변수로, 내가 좋아하는 뭔가를 얻을 "{0g}" "{O는 :.. N 대하}",하지 않은 내가 기대하는 것

+1

는 '새 날짜 시간없는 (0)'같은 정적'DateTime.MinValue'는? 'return (dateTime == DateTime.MinValue)를 사용할 수 있습니까? String.Empty : ... '를 사용하여 각 검사마다 새 시간을 만듭니다. – Rup

답변

3

{0:} 부분은 string.Format 형식의 서식이며, "g"를 ToString()에 전달하기 만하면됩니다.

<%: Html.DateTimeOrEmpty(Model.StopDate, "g") %> 

그러나, 나는 당신이

  1. 원시 날짜 시간 값의 비교를 할 것을 권 해드립니다 - 또는 문자열을 비교하려는 경우 한 번만 표시 문자열을 구성하고 재사용
  2. 을 그
  3. 매번 새 DateTime을 만들지 않고 비교할 때 정적 DateTime.MinValue를 사용하거나 비교할 정적 인스턴스를 하나 이상 만 만들면됩니다.

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime, string format) 
{ 
    return (dateTime == DateTime.MinValue) 
     ? String.Empty 
     : dateTime.ToString(format); 
} 
+0

위대한 !! 그것은 작동합니다. 솔루션 및 DateTime.MinValue 힌트 주셔서 감사합니다. 그것은 더 나은 성능을 가지고 읽기가 쉽습니다 :) –

+1

또한 nullable DateTime (DateTime?) 대신 DateTime.MinValue를 사용하는 것이 좋습니다. –

+0

이미 DateTime 메서드를 오버로드 했습니까? 매개 변수. –