2017-12-07 4 views
1

다음 문자열이 "2017-2"이고 "2017-02"으로 서식을 지정해야합니다.숫자와 문자를 포함하는 문자열의 서식을 지정하는 방법

var period = "2017-2"; 
var periodFormatted = String.Format("{0:0000-00}", period); 

periodFormatted는

"2017-02"로 포맷 기간을 얻을 수있는 올바른 구문은 무엇입니까 "2017-2"을 반환?

+0

는 meaningless.The 방법의 설명입니다. 당신이 가지고있는 것은 마침표가 아니며 누군가가 마침표로 해석 할 수도 있고 그렇지 않을 수도있는 문자열 일뿐입니다. –

+0

DateTime의 인스턴스를 사용하지 않는 이유는 무엇입니까? 거기에 마침표를로드하면'dateTimeInstance.ToString ("your format")'(yyyy-MM 경우) – Dragonvil

+0

을 사용할 수 있습니다 * 마침표 *를 나타내려면 구조체 나 튜플과 같은 고유 한 형식을 만듭니다 년과 월을 포함합니다. DateTime을 사용하고 일 부분을 무시할 수도 있습니다. –

답변

2

string.Format은 문자열에 숫자가 포함되어 있다는 것을 알지 못하므로 (또는주의) 직접 서식을 지정할 수 없습니다. 당신은 문자열을 나눌 수 있고 마지막 부분을 숫자로 해석 할 수 있습니다. 예를 들어 :

var period = "2017-2"; 
var parts = period.Split('-');; 
var periodFormatted = $"{parts[0]}-{int.Parse(parts[1]):D2}"; 

그러나, 당신은 아마 포맷이 사소한 만들었을 것입니다 적절한 DateTime 객체 (또는 연도와 월 값을 나타내는 사용자 정의 유형) 처음에를로 period 값을 가져야한다.

1

DateTime으로 구문 분석하고 두 번째 단계에서 형식을 지정할 수 있습니다.

string period = "2017-2"; 
DateTime temp = DateTime.ParseExact(period, "yyyy-M", CultureInfo.InvariantCulture); 
string result = temp.ToString("yyyy-MM"); 

참고 : M0을 선도하지 않고 월을 정의하고 MM 항상 2 자리의 달입니다.

참조 :`지정된 형식에 따라 스트링 객체의 값을 변환하고 다른 string.`에 삽입 : 문자열에 및 String.format를 호출 https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

관련 문제