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


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.