2010-05-19 2 views
5

나는 한 달의 수를 반환 할 그리고 난 함수를 만들었지 만 항상 반환 C#을 기능에 한 달의 수를 반환 누군가 wath가 틀렸다고 말해줘? 나는 초보자이다!어떻게</p> <p>이 공은 내 코드입니다

+0

"1 월"과 "1 월"을 비교하려고합니까? – Gabe

+1

문제에 대한 답변이 아니지만 DateTimeFormatInfo.MonthNames에서 현재 문화권의 Month 문자열 배열을 반환해야합니다. 그런 다음 색인을 사용하여 월 이름에서 월 번호를 가져올 수 있습니다. http : //msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.monthnames%28v=VS.71%29.aspx – JoeBilly

답변

5

다음과 같이 그것을 할 좋을 것 :

switch (s.Trim().ToUpper()) 
{ 
    case "JANUARY": return 1; 
    case "FEBRUARY": return 2; 
    // etc. 
} 

return 0; 

이유 :

  1. switch로 시작하도록 최적화 (작은 포인트 만 언급 할 가치)입니다.
  2. 값이 있으면 나머지 모든 if 수표는 무의미합니다.
  3. "1 월", "1 월"및 "1 월"과 "1 월"모두가 1을 반환한다고 가정하면 Trim()ToUpper() 전화가 처리됩니다. 여기
    DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture).Month 
    

    사용에 대한 예는 다음과 같습니다 :
12

왜 기능 내장 사용하지 것이다 당신이 초보자,

How to parse a month name (string) to an integer for comparison in C#?

+0

너 혼란 스럽 니? 'Month.toInt'는 빌트인 함수가 아닙니다. 링크 된 질문의 OP는 * 이와 비슷한 것이 있는지 물어 보는 것이 었습니다. 실제로 받아 들여지는 대답은'DateTime.ParseExact'를 사용하여 제안합니다. –

+0

'Month.toInt' 연산은 없습니다. 당신은'DateTime.Month' 속성을 찾고 있습니다. –

+0

너무 많은 것을 입력하면 혼란 스럽습니다. 나는 올바른 것으로 편집했다. – Avitus

1

확인을하지만, 여전히 귀하의 처분에 도구가 있습니다. 중단 점을 설정하고 디버거에서 단계별로 수행하십시오. 당신이하는 것처럼 snr의 가치를보십시오. 어떤 if 문장이 nr = 부분을 실행하고 어떤 부분을 실행하지 않는지 확인하십시오. 그렇다면 당신은 이해할 것입니다. 그것이 의미하는 바대로 나는 당신의 실제 코드를 붙여 넣은 것 같지 않습니다, 왜냐하면 당신의 질문은 세미 콜론이 빠져 있고 심지어 컴파일되지 않을 수도 있기 때문입니다. 그것은 당신이 그것을 길고 복잡한 LINQ 방법을 할 수있는 간단하고 쉬운 방법을 왜

 string value = "June"; 
    DateTime result; 
    bool ok; 
    ok = DateTime.TryParseExact(value, "MMMM", 
        CultureInfo.CurrentCulture, DateTimeStyles.None, out result); 
    if (ok) 
    { 
     int monthNumber = result.Month; 
     Console.WriteLine(monthNumber); 
    } 
0

이 샘플로 시험 인쇄를 해보십시오!

int GetMonthNumber(string month) 
    { 
     return System.Globalization.DateTimeFormatInfo.CurrentInfo.MonthNames 
      .Select((m, i) => new { Month = m, Number = i + 1 }) 
      .First(m => m.Month.ToLower() == month.ToLower()) 
      .Number; 
    } 
관련 문제