2011-10-05 5 views
2

여기에 나와있는 것처럼 DateTime을 표시하는 데 사용자 정의 형식을 사용하고 있습니다 : http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspxDateTime 사용자 정의 형식이 예상과 다른 경우

new DateTime(2011,10,5).ToString("dd"); 

결과 : "05"

과 :

new DateTime(2011,10,5).ToString("d MM"); 

반환 모두 내가 기대하지만 것 같다

"5 10" :

new DateTime(2011,10,5).ToString("d"); 

반환 : 당신이 사용 하듯이 실제로 문제가되지 않습니다 "5"

: "05/10/2011"

나는 그것을 반환 할 것으로 예상했을 때 new DateTime(2011,10,5).Day을 하루 얻기 위해,하지만 난 왜 사용자 지정 형식에 관해서 관심 내가 예상했던대로 작동하지 않았다.

답변

5

여기를 읽으십시오. Standard Date and Time Format Strings"d" Short date pattern.. 네, d :-)을 재사용하는 것은 아마도 어리석은 짓이었습니다. 다행스럽게도 그것은 대문자입니다.

일반적으로 사용자가 수행하는 작업을 정확히 알고 프로그램이 해외로 판매되지 않는다는 사실을 알지 못하는 경우 일반적으로 사용자에게 입/출력되지 않는 항목에 대해 CultureInfo.InvariantCulture을 사용해야합니다. 따라서 사용자에게 날짜를 표시하는 경우 그의 문화/현지 문화를 사용하십시오. 사용자에게 날짜를 묻는 경우. 그러나 날짜를 사용하여 파일 이름을 지정하거나 내부 작업을 수행하는 경우 보통 CultureInfo.InvariantCulture을 사용하는 것이 좋습니다.

Console.WriteLine(DateTime.Now.ToString("MM", new System.Globalization.CultureInfo("ar-SA"))); 
Console.WriteLine(DateTime.Now.ToString("yyyy", new System.Globalization.CultureInfo("ar-SA"))); 

Console.WriteLine(DateTime.Now.ToString("MM", System.Globalization.CultureInfo.InvariantCulture)); 
Console.WriteLine(DateTime.Now.ToString("yyyy", System.Globalization.CultureInfo.InvariantCulture)); 

을하고 xanatos 말했듯이, 그것은 표준 날짜 및 시간 형식 문자열로 "D"를 치료하는 것 :-)

+1

음, * 불변 문화 * 또는 * 사용자에게 유효 할 것으로 예상되는 표준 형식 : –

+0

@JonSkeet 말씀 드린대로 "서버"부분에 대해서는 "로컬" 몇 년이 조금 .... 복잡한 버그 일 수도 있습니다 :-) (그래서 현재 날짜를 기준으로 파일 이름을 지정해야한다면 아마도 InvariantCulture를 사용하는 것이 더 낫습니다) – xanatos

+0

파일 이름을 짓는 데 전적으로 동의합니다. 그러나 당신은 일반적으로 말했습니다 : –

4

무엇을보고 말해 :

이보십시오.

사용자 정의 날짜 및 시간 형식 문자열을 "d"로 지정하려면 "표준 패턴으로 처리하지 마십시오!"라고 말하기 위해 효과적으로 이스케이프 처리해야합니다. 여기 %

new DateTime(2011, 10, 5).ToString("%d"); 

는 "탈출 표준에서 정의하는"부분이다. "단일 사용자 지정 형식 지정자를 사용"Custom Date and Time Format Strings documentation, sectino에서

:

사용자 지정 날짜 및 시간 형식 문자열이 두 개 이상의 문자로 구성되어 있습니다. 날짜 및 시간 형식화 메소드는 모든 단일 문자 스트링을 표준 날짜 및 시간 형식 문자열로 해석합니다. 문자를 유효한 형식 지정자로 인식하지 않으면 FormatException을 발생시킵니다. 예를 들어, 지정자 "h"로만 구성된 형식 문자열은 표준 날짜 및 시간 형식 문자열로 해석됩니다. 그러나이 특별한 경우에는 "h"표준 날짜 및 시간 형식 지정자가 없기 때문에 예외가 발생합니다.

"d", "f", "F", "g", "h"를 사용하는 형식 문자열의 유일한 지정자로 사용자 지정 날짜 및 시간 형식 지정자를 사용하려면 "H", "K", "m", "M", "s", "t", "y", "z", ":"또는 "/"사용자 정의 형식 지정자) 단일 사용자 정의 날짜 및 시간 지정자 앞에 퍼센트 ("%") 형식 지정자를 포함 시키십시오.

예를 들어 "% h"은 현재 날짜 및 시간 값으로 표시되는 시간을 표시하는 사용자 지정 날짜 및 시간 형식 문자열로 해석됩니다. "h"또는 "h"형식 문자열을 사용할 수도 있습니다. 단, 시간과 함께 결과 문자열에 공백이 포함됩니다.

+1

@xanatos : 링크와 약간의 문서로 답을 편집했습니다. –

관련 문제