รับชื่อเดือนจากหมายเลขเดือน


254

ซ้ำเป็นไปได้:
วิธีรับ MonthName ใน c # ได้อย่างไร

ฉันใช้ไวยากรณ์ c # ต่อไปนี้เพื่อรับชื่อเดือนจากเดือนไม่ แต่Augustฉันต้องการฉันเท่านั้นAug..

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

ข้อเสนอแนะใด ๆ ...


3
นอกเหนือจาก .GetMonthName (int) ไม่กลับสตริงคุณกำลังมองหาก็ไม่กลับสตริงดังนั้น .ToString () ไม่จำเป็น
DaveD

1
จะไม่ง่ายกว่าแค่การเพิ่ม. Substring (0,3)?
Federico Navarrete

เป็นไปได้ที่ซ้ำกันของวิธีรับชื่อเดือนใน C #
Cœur

คำตอบ:


349

สำหรับชื่อเดือนสั้น ๆ ให้ใช้:

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

สำหรับชื่อยาว / เต็มเดือนสำหรับวัฒนธรรมสเปน ("es")

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

ฉันจะใช้รหัสด้านบนได้อย่างไรถ้าฉันต้องการ "สิงหาคม" ชื่อเต็มเดือน
อัลเบิร์ต Laure

25
@ User6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Robert Fricke

สิ่งนี้: "string s = new DateTime (1958, month, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" ให้ฉันว่า "System.Globalization.CultureInfo.InvariantCulture 'ไม่สามารถเรียกใช้สมาชิกได้เช่นวิธีการ"
B. Clay Shannon

B. Clay Shannon เพิ่ม () รอบ (ใหม่ DateTime (1958, เดือน, 1))
นิวเคลียร์หวาน

2
คำตอบนี้ไม่ใช่ IMHO ที่ดีที่สุดในการทำงานจากตัวเลขเดือนแทนที่จะเป็น DateTime เหมือนในคำถาม OP Lasse V. Karlsen คำตอบตรงไปตรงมามากขึ้นสำหรับชื่อเดือนสั้น ๆ และเพื่อให้ได้ชื่อเดือนในวัฒนธรรมท้องถิ่นของคุณให้ใช้ CultureInfo.CurrentCulture เช่นเดียวกับใน CharithJ answer's
หยุด

290

สำหรับชื่อเดือนย่อ: "Aug"

DateTimeFormatInfo.GetAbbreviatedMonthName วิธีการ (Int32)

ส่งกลับชื่อย่อวัฒนธรรมเฉพาะของเดือนที่ระบุตามวัฒนธรรมที่เกี่ยวข้องกับวัตถุ DateTimeFormatInfo ปัจจุบัน

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

สำหรับชื่อเต็มเดือน: "สิงหาคม"

DateTimeFormatInfo.GetMonthName วิธีการ (Int32)

ส่งกลับชื่อเต็มเฉพาะวัฒนธรรมของเดือนที่ระบุตามวัฒนธรรมที่เกี่ยวข้องกับวัตถุ DateTimeFormatInfo ปัจจุบัน

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

2
GetMonthName ส่งคืนชื่อเต็มเดือน หากคุณต้องการเป็น JAN, FEB ฯลฯ คุณสามารถใช้ var month = 10; string monthName = DateTime ใหม่ (2014, เดือน, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper ();
Dmitry Pavlov

3
@DmitryPavlov GetAbbreviatedMonthName()เป็นวิธีที่ดีกว่าในการทำเช่นนั้น
NickG

2
DateTimeFormatInfo ควรเป็น DateTimeFormat (อย่างน้อยใน. Net 4.6)
TravisWhidden

ตัวเลือกที่สองใช้งานได้สำหรับฉันแม้ว่าฉันจะใช้GetCultureInfo("en-GB")แทนCurrentCultureเพราะฉันต้องการให้แน่ใจว่าชื่อเดือนของฉันจะเป็นภาษาอังกฤษเสมอ
Maurice Klimek

นี่ควรเป็นคำตอบที่ดีที่สุด บันทึกวันของฉัน ขอบคุณ
มาห์มุด Eidarous



11

คุณสามารถรับสิ่งนี้ได้ด้วยวิธีดังต่อไปนี้

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

ตอนนี้รับตัวละครสามตัวแรก

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

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

วิธีนี้คืน April

หากคุณต้องการภาษาพิเศษคุณสามารถเพิ่ม:

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

หรือภาษาที่คุณต้องการ

ตัวอย่างเช่นกับes-ESวัฒนธรรม:

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

ผลตอบแทน: Abril

คืนค่า: Abril(เป็นภาษาสเปนเพราะเรากำหนดค่าculture as es-ESในwebconfigไฟล์ของเรามิฉะนั้นคุณจะได้รับApril)

ว่าควรจะทำงาน


5

สิ่งนี้ควรส่งคืนข้อความเดือน(มกราคม - ธันวาคม)จากดัชนีเดือน(1-12)

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

1
กรุณาให้ข้อมูลเพิ่มเติม อย่าเพิ่งโพสต์รหัส
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);

เอาท์พุต

maj
may
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.