Отримайте назву місяця від номера місяця


254

Можливий повтор :
Як отримати MonthName в c #?

Я використовував наступний синтаксис c #, щоб отримати ім'я місяця від місяця немає, але я отримую, що Augustя хочу тільки Aug..

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

Будь-яка пропозиція ...


3
Крім .GetMonthName (ціле) не повертає рядок , яку ви шукаєте, це дійсно повертає рядок, тому .ToString () не потрібно
— DaveD

1
Не буде простіше просто додати .Substring (0,3)?
— Федеріко Наваррете

Відповіді:


349

Для коротких імен на місяць використовуйте:

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

Для довгих / повних місяців імена для іспанської ("ес") культури

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

як я можу використовувати код вище, якщо хочу "серпень"? повна назва місяця?
— Альберт Лоре

25
@ User6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
— Роберт Фріке

Це: "string s = new DateTime (1958, місяць, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" дає мені: "Незваний член" System.Globalization.CultureInfo.InvariantCulture "не можна використовувати як метод."
— Б. Клей Шеннон

B. Clay Shannon add () навколо (новий DateTime (1958, місяць, 1))
— ядерний солодкий

2
Ця відповідь - не найкращий ІМХО для роботи з числа місяця, а не з DateTime, як у запитанні про ОП. Відповіді Лассе В. Карлсена є більш простими для короткої назви місяця. А щоб отримати назву місяця у вашій місцевій культурі, використовуйте CultureInfo.CurrentCulture, як у відповідях CharithJ.
— АФРАКТ

290

Для скорочених назв місяця: "серп"

Метод 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; рядок monthName = новий DateTime (2014, місяць, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper ();
— Дмитро Павлов

3
@DmitryPavlov GetAbbreviatedMonthName()- це кращий спосіб зробити це.
— NickG

2
DateTimeFormatInfo має бути DateTimeFormat (принаймні, в .net 4.6)
— TravisВідкрито

Другий варіант працював для мене, хоча я використовував GetCultureInfo("en-GB")замість того, CurrentCultureщо хотів бути впевненим, що ім’я місяця завжди буде англійською мовою
— Моріс Клімек

Це має бути найкращою відповіддю. Врятував мій день. Дякую.
— Махмуд Ейдарус



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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.