2011-08-03 3 views
3

저는 그래프에 표시하기 위해 datetime을 포맷하는 작업을하고 있습니다..net DateTime 형식은 자정 인 경우 시간을 숨 깁니 까?

M은/DD/YYYY HH : MM : SS

하고 난 다음 사항을 제외한 그것을 원하는만큼 출력 : mm : 나는 완전히 HH를 숨길를 SS 경우 나는 형식 문자열을 시간은 자정이다.

맞춤 iformat 공급자없이 할 수 있습니까?

감사합니다.

+0

당신은 형식 문자열에 "M/DD/YYYY"를 자정를 확인하고 변경할 수 있습니까? – Polyfun

+0

자정을 건너 뛸 수 없습니다 ... –

+1

매우 많은 양의 데이터가 없으면 가장 가까운 초로 자정에 자정에 일어난 모든 항목이있을 가능성이 높습니다. 특정 날짜를 분명히 보여주는 것만으로는 사용자에게 충분한 정보가 없기 때문에 특히 자정에 일어난 일을 알릴 수 있습니다. 그것에 자신의 – Coops

답변

8
DateTime time = DateTime.Now; 
string txt = time.ToString(time == time.Date ? "M/dd/yyyy" : "M/dd/yyyy HH:mm:ss"); 
+0

깨끗하고, 나는 그것을 좋아한다 – Coops

+0

나는 prolly 이것을 사용하여 끝낼 것이다. 그것의 완벽한 솔루션 (마이크로 소프트 차트 패키지는 추가 코드없이 선택적 포맷을 허용하지 않습니다),하지만 나는 그것의 최고의 솔루션을 생각합니다. 감사! – greggorob64

+3

사용하지 마십시오. '미국 영어'시간 형식으로 가정합니다. – c00000fd

3
DateTime time = DateTime.Now; 

string format = ""; 

if (time.Hour == 0) 
{ 
    format = "M/dd/yyyy"; 
} 
else 
{ 
    format = "M/dd/yyyy HH:mm:ss"; 
} 
+1

이렇게하면 "00:12:34"와 같은 시간이 숨겨집니다. – Carra

+0

@Carra : 그것은 자정에 시간을 숨기는 원래 질문의 요점이었습니다. –

+1

자정 2 분 후 자정이 아니지만 시간도 숨겨집니다. 나는 "time == time.Date"로 자정을 확인합니다. – Carra

3

것 @JDunkerley에 의해 제안 된 솔루션의 문화 독립적 인 버전 :

DateTime time = DateTime.Now; 
string txt = time.ToString(time == time.Date ? "d" : "g"); 

표준 날짜 및 시간 형식 문자열 here에 대해 자세히.

0

제안 된 솔루션은 사용자의 지역화 된 시간 형식을 고려하지 않고 단순히 US English으로 가정하기 때문에 매우 좋지 않습니다. 여기

가 완료 했어야하는 방법은 다음과 같습니다

public static string formatDateTimeWithTimeIfNotMidnight(DateTime dt) 
{ 
    //RETURN: 
    //  = String for 'dt' that will have time only if it's not midnight 

    if (dt != dt.Date) 
    { 
     //Use time 
     return dt.ToString(); 
    } 
    else 
    { 
     //Only date 
     return dt.ToShortDateString(); 
    } 
} 
관련 문제