2009-06-10 31 views
73

C# olarak ay adını bulma konusunda nasıl bir şey gider? int numaralı ayda büyük bir switch bildirimi veya if bildirimi yazmak istemiyorum. VB.Net'te MonthName()'u kullanabilirsiniz, ancak C# ne olacak?C# olarak nasıl ay adı alınır?

+0

Olası yinelenen [C# bir ay adı içine bir tamsayı çevirmek için en iyi yolu?] (Http://stackoverflow.com/questions/218908/best-way-to-turn-an- bir tarihe sahip olduğunuz varsayılarak – bluish

cevap

143

Sen ay adını almak için CultureInfo kullanabilirsiniz. Kısa ay ismini ve diğer eğlenceli şeyleri bile alabilirsiniz.

Bunları daha sonra daha az kod yazmanıza izin verecek olan uzantı yöntemlerine koymanızı öneririm. Ancak istediğiniz gibi uygulayabilirsiniz. Bu yardımcı olur

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); 
    } 
} 

Umut:

Burada uzatma yöntemleri kullanarak bunu nasıl bir örnektir! Sadece o zaman Microsoft.VisualBasic başvuru monthName kullanmak istiyorum ve onu Microsoft.VisualBasic.DateAndTime

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

Ayrıca kullanılabilecek bir" InvariantInfo "özelliği olduğunu da ekleyebilirim. Ve, bence, aşağıdakileri yapmak için aşağıdaki daha basit/okunabilir bir formattır: 'DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName (...)' veya 'DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName (...)' – bsara

104

Kullanım "AAAA" biçim belirteci:

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

numaralı tamsayı ayına eşittir. değilse: 'var month = yeni DateTime (1, i, 1) .ToString (" MMMM "); – Myster

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

İhtiyacınız yok ToString(). Aslında –

+5

Veya String.Format. Just DateTime.Now.ToString ("MMMM") daha basittir. –

+1

Bunu da önerdim, ama bunu başka bir cevap olarak zaten yaptınız. Gortok'un yöntemi ayrıca biçimlendirmeyi yapmak için yer tutucuların kullanımını gösterir, bu yüzden bunun iyi bir alternatif örnek olduğunu düşünüyorum. –

5

tarihinizi Supposing bugün. Umarım bu size yardımcı olur.

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

Bu, OP'nin sorusunu cevaplamıyor çünkü dediler ki: "Ben gerçekten ** 'büyük bir anahtar ifadesi yazmak istiyorum [...]" (benim için önem). Lütfen cevap yazmadan önce soruları detaylı olarak okuyun. – honk

İlgili konular