2014-09-17 3 views
0

DateTime 변수를 문자열로 변환하는 데 문제가 있습니다. 내가 다음 코드로 AM/PMDateTime에서 문자열 형식으로 C#

을 포함하여 12 시간 시계를 사용하여 시간을 표시 할 : 나는 "11:39"을 얻을 것이다하지만 PM/AM이 표시되지 않을

string timeStr = PaymentDate.ToString("hh:mm tt"); 

. 어떤 추측이라도? 현재의 문화가 그것을 사용하지 않는 경우에도

+0

'CurrentCulture'란 무엇입니까? –

+0

@ SonerGönül, 추측을해야합니다 : p –

+0

이것은 많은 도움이 될 것입니다 : http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx – Pavenhimself

답변

3

DateTime.ToString(string) method은 기본적으로 CurrentCulture를 사용합니다.

DateTimeFormatAMDesignator은 빈 문자열이라고 생각합니다. 그래서 CurrentCulture으로 인쇄 할 수 없습니다.

대안으로 DateTime.ToString overload에서 두 번째 매개 변수 (a AMDesignator"AM"을 갖는) InvariantCulture를 사용할 수있다. 에

string timeStr = PaymentDate.ToString("hh:mm tt", CultureInfo.InvariantCulture); 

Inspector Gadget 모드 : 프로필 페이지는 Ireland에서하고 난 당신 CurrentCultureen-IE 가정 말한다. 그리고 AMDesignator 속성 값은 빈 문자열입니다.

CultureInfo.GetCultureInfo("en-IE").DateTimeFormat.AMDesignator; 
// Prints empty string 
4

당신은 AM/PM 지정자를 강제로 CultureInfo.InvariantCulture를 사용할 수 있습니다

PaymentDate.ToString("hh:mm tt", CultureInfo.InvariantCulture); 

당신은 현재 문화의 지정자에 의해 무엇인지 확인할 수 있습니다

(광산 "도에서 ""입니다 드-DE은 ") :

DateTimeFormatInfo.CurrentInfo.AMDesignator // and .PMDesignator 
관련 문제