2009-06-10 2 views
73

C#에서 달 이름을 찾는 방법은 무엇입니까? 달 int에 큰 문 switch 또는 if 문을 쓰고 싶지 않습니다. VB.Net에서는 MonthName()을 사용할 수 있지만 C#은 어떨까요?C#에서 달 이름을 얻는 방법?

+0

의 사용 가능한 복제 [C#에서 달 이름에 정수를 설정하는 가장 좋은 방법은?] (http://stackoverflow.com/questions/218908/best-way-to-turn-an- 당신이 날짜를 가지고 있다고 가정한다면, – bluish

답변

143

당신은 월 이름을 얻기 위해 CultureInfo를 사용할 수 있습니다. 짧은 달 이름뿐만 아니라 다른 재미있는 것을 얻을 수도 있습니다.

나는이 코드를 확장 메소드에 넣으면 나중에 코드를 적게 쓸 수 있다고 제안합니다. 그러나 원하는대로 구현할 수 있습니다. 이 도움이

using System; 
using System.Globalization; 

class Program 
{ 
    static void Main() 
    { 

     Console.WriteLine(DateTime.Now.ToMonthName()); 
     Console.WriteLine(DateTime.Now.ToShortMonthName()); 
     Console.Read(); 
    } 
} 

static class DateTimeExtensions 
{ 
    public static string ToMonthName(this DateTime dateTime) 
    { 
     return CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dateTime.Month); 
    } 

    public static string ToShortMonthName(this DateTime dateTime) 
    { 
     return CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month); 
    } 
} 

희망 :

여기에 확장 메서드를 사용하여 작업을 수행하는 방법의 예입니다! 그냥 다음 Microsoft.VisualBasic를 참조 MONTHNAME를 사용하고자하고 Microsoft.VisualBasic.DateAndTime

//eg. Get January 
String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1); 
+4

'InvariantInfo' 속성을 사용할 수 있습니다. 그리고 제 의견으로는 다음과 같이 간단하고 읽기 쉬운 형식입니다 :'DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName (...)'또는'DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName (...)' – bsara

104

사용 "MMMM"형식 지정자 :

string month = dateTime.ToString("MMMM"); 
+16

에 달 이름을 넣으십시오. 그렇지 않다면 :'var month = new DateTime (1, i, 1) .ToString ("MMMM"); ' – Myster

9
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now) 
+0

당신은 ToString(). –

+5

아니면 String.Format입니다. Just DateTime.Now.ToString ("MMMM")은 더 간단합니다. –

+1

나는 또한 그것을 제안했을 것이다. 그러나 당신은 이미 그것을 다른 대답으로 가지고 있었다. Gortok의 방법은 자리 표시자를 사용하여 형식을 지정하는 방법도 보여 주므로 좋은 대체 예제라고 생각합니다. –

5

날짜를 가정 할 것은 오늘입니다. 희망이 당신을 도와줍니다.

DateTime dt = DateTime.Today; 

string thisMonth= dt.ToString("MMMM"); 

Console.WriteLine(thisMonth); 
-7
private string MonthName(int m) 
    { 
     string res; 
     switch (m) 
     { 
      case 1: 
       res="Ene"; 
       break; 
      case 2: 
       res = "Feb"; 
       break; 
      case 3: 
       res = "Mar"; 
       break; 
      case 4: 
       res = "Abr"; 
       break; 
      case 5: 
       res = "May"; 
       break; 
      case 6: 
       res = "Jun"; 
       break; 
      case 7: 
       res = "Jul"; 
       break; 
      case 8: 
       res = "Ago"; 
       break; 
      case 9: 
       res = "Sep"; 
       break; 
      case 10: 
       res = "Oct"; 
       break; 
      case 11: 
       res = "Nov"; 
       break; 
      case 12: 
       res = "Dic"; 
       break; 
      default: 
       res = "Nulo"; 
       break; 
     } 
     return res; 
    } 
+8

이것은 OP의 질문에 대답하지 않습니다. 왜냐하면 그들은 말하기를 "나는 정말로 ** 거대한 switch 문 [...]"(강조하는 광산)을 쓰고 싶지 않습니다 **. 답변을 작성하기 전에 질문을 자세히 읽으십시오. – honk