Nhận tên tháng từ số tháng


254

Có thể trùng lặp:
Làm thế nào để có được tên tháng trong c #?

Tôi đã sử dụng cú pháp c # sau đây để lấy tên tháng từ tháng không nhưng tôi chỉ nhận được Augusttôi muốn Aug..

System.Globalization.DateTimeFormatInfo mfi = new 
System.Globalization.DateTimeFormatInfo();
string strMonthName = mfi.GetMonthName(8).ToString();

Bất kì lời đề nghị nào...


3
Ngoài .GetMonthName (int) không trả về chuỗi bạn đang tìm, nó sẽ trả về một chuỗi, vì vậy .ToString () là không cần thiết
DaveD 18/12/14

1
Sẽ không dễ dàng hơn nếu chỉ thêm một chuỗi. (0,3)?
Federico Navarittle

Câu trả lời:


349

Đối với tên tháng ngắn sử dụng:

string monthName = new DateTime(2010, 8, 1)
    .ToString("MMM", CultureInfo.InvariantCulture);

Đối với tên dài / tháng đầy đủ cho văn hóa Tây Ban Nha ("es")

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es"));

Làm thế nào tôi có thể sử dụng mã ở trên nếu tôi muốn "Tháng Tám"? Tên tháng đầy đủ?
Albert Laure

25
@ Người dùng6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Robert Fricke

Điều này: "chuỗi s = new DateTime (1958, tháng, 1) .ToString (" MMMM ", CultureInfo.InvariantCARM ());" mang lại cho tôi, "Thành viên không thể xâm phạm 'System.Globalization.CultInfo.InvariantCARM' không thể được sử dụng như một phương thức."
B. Clay Shannon

B. Clay Shannon thêm () xung quanh (DateTime mới (1958, tháng, 1))
hạt nhân ngọt ngào

2
Câu trả lời này không phải là IMHO tốt nhất để hoạt động từ số tháng thay vì DateTime như trong câu hỏi OP. Câu trả lời của Lasse V. Karlsen đơn giản hơn cho tên tháng ngắn. Và để có được tên tháng trong văn hóa địa phương của bạn, hãy sử dụng CultureInfo.CiverseCARM như trong câu trả lời của CharithJ.
Thu hút

290

Đối với tên tháng viết tắt: "tháng tám"

Phương thức DateTimeFormatInfo.GetAdenameviatedMonthName (Int32)

Trả về tên viết tắt dành riêng cho văn hóa của tháng được chỉ định dựa trên văn hóa được liên kết với đối tượng DateTimeFormatInfo hiện tại.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(8)

Đối với tên đầy đủ tháng: "Tháng tám"

Phương thức DateTimeFormatInfo.GetMonthName (Int32)

Trả về tên đầy đủ của văn hóa của tháng được chỉ định dựa trên văn hóa được liên kết với đối tượng DateTimeFormatInfo hiện tại.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);

2
GetMonthName trả lại tên đầy đủ tháng. Nếu bạn cần nó như JAN, FEB, v.v. bạn có thể sử dụng var tháng = 10; chuỗi thángName = new DateTime (2014, tháng, 1) .ToString ("MMM", CultureInfo.InvariantCARM) .ToUpper ();
Dmitry Pavlov

3
@DmitryPavlov GetAbbreviatedMonthName()là một cách tốt hơn để làm điều đó.
NickG

2
DateTimeFormatInfo phải là DateTimeFormat (ít nhất là trong .net 4.6)
TravisWhidden

Tùy chọn thứ hai làm việc cho tôi, mặc dù tôi đã sử dụng GetCultureInfo("en-GB")thay CurrentCulturevì vì tôi muốn chắc chắn, tên tháng của tôi sẽ luôn bằng tiếng Anh
Maurice Klimek

Đây phải là câu trả lời tốt nhất. Cứu ngày của tôi. Cảm ơn.
Mahmoud Eidarous



11

Bạn có thể có được điều này theo cách sau,

DateTimeFormatInfo mfi = new DateTimeFormatInfo();
string strMonthName = mfi.GetMonthName(8).ToString(); //August

Bây giờ, có được ba ký tự đầu tiên

string shortMonthName = strMonthName.Substring(0, 3); //Aug

9
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Phương thức này trở lại April

Nếu bạn cần một số ngôn ngữ đặc biệt, bạn có thể thêm:

<system.web>
    <globalization culture="es-ES" uiCulture="es-ES"></globalization>
     <compilation debug="true"
</system.web>

Hoặc ngôn ngữ ưa thích của bạn.

Ví dụ, với es-ESvăn hóa:

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Trả về: Abril

Trả về: Abril(bằng tiếng Tây Ban Nha, bởi vì, chúng tôi đã định cấu hình culture as es-EStrong webconfigtệp của chúng tôi , nếu không, bạn sẽ nhận được April)

Cần làm việc.


5

Điều này sẽ trả về văn bản tháng (tháng 1 - tháng 12) từ chỉ mục tháng (1-12)

int monthNumber = 1; //1-12  
string monthName = new DateTimeFormatInfo().GetMonthName(monthNumber);

1
Vui lòng cung cấp một số thông tin bổ sung. Đừng chỉ đăng mã
ochs.tobi

1
var month = 5;
var cultureSwe = "sv-SE";
var monthSwe = CultureInfo.CreateSpecificCulture(cultureSwe).DateTimeFormat.GetAbbreviatedMonthName(month);
Console.WriteLine(monthSwe);

var cultureEn = "en-US";
var monthEn = CultureInfo.CreateSpecificCulture(cultureEn).DateTimeFormat.GetAbbreviatedMonthName(month);
Console.WriteLine(monthEn);

Đầu ra

maj
may
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.