Как получить DayNames с языка только в .NET - PullRequest
5 голосов
/ 23 марта 2010

Предположим, что у меня есть только код страны (en, de, fr), и мне нужно отображать дни недели на этом языке. Я знаю о RegionInfo и CultureInfo - но я не могу найти решение. Если я создаю информацию о стране из (например) «en», у меня нет информации DateTime. Также было бы хорошо взять только первый соответствующий регион. Для примера en-US для en или de-DE для de.

Я не знаю, есть ли различия в DayNames, но я знаю, что они есть на месяцы. де-де Фебруар - де-АТ Фебер - все равно мне все равно. Событие, если оно может быть «немного другим» (чтобы увидеть Фебруара вместо Фибера) - оно все еще немецкое.

И это то, чего я хочу достичь - получить запись в понедельник - получить де и написать Montag ...

Есть ли способ создать регион только из кода языка?

Ответы [ 7 ]

6 голосов
/ 23 марта 2010

Этот фрагмент может быть полезен: чтобы перейти от «en» к CultureInfo, более быстрый путь -

CultureInfo ci = CultureInfo.CreateSpecificCulture("en")

Во второй части, я полагаю, вы спрашиваете названия дней, поэтому вы должны написать

string[] names = ci.DateTimeFormat.DayNames 
4 голосов
/ 23 марта 2010

Обычно, когда вы говорите «мне все равно», вы начинаете бороться с API.

В любом случае, это должно работать:

var list = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
var ci = list.FirstOrDefault(c => c.IetfLanguageTag.StartsWith("de"));

var ri = new RegionInfo(ci.Name);
Console.WriteLine("Today = {0:dddd MMMM yyyy}", DateTime.Today);
1 голос
/ 30 января 2012

DateTime.Today.ToString("dddd", new CultureInfo("zh-TW"))

Над кодом будет напечатан понедельник как 星期一 (китайский язык).

1 голос
/ 23 марта 2010

Это даст вам список культур:

    Dim ci As CultureInfo
    For Each ci In CultureInfo.GetCultures(CultureTypes.SpecificCultures)
        Console.WriteLine(ci.Name)
    Next

ВЫВОД: ар-SA BG-BG ча-ES ZH-TW CS-CZ да-DK де-DE эль-GR ан-США фи-FI а как он-IL Hu-HU IS-IS он-IT JA-JP ко-KR п-NL NB-NO пл-PL PT-BR ро-RO р-RU ч-HR ск-SK кв-AL св-SE го-TH TR-TR Ур-PK я сделал ик-UA быть-BY СЛ-SI ET-Е.Е. LV-LV LT-LT справедливый VI-VN гип-AM аз-Latn-AZ ес-ES тк-МК аф-ZA ка-GE FO-FO привет-IN мс-MY кк-KZ ка-KG SW-KE UZ-Latn-UZ тт-RU ра-IN гу-IN та-IN тэ-IN KN-IN MR-IN са-IN млн-MN GL-ES кок-IN Syr-SY DV-MV ар-IQ ZH-CN де-CH ан-ГБ эс-MX FR-BE зуд NL-BE NN-НЕТ PT-PT стер-Latn-CS св-FI аз-Cyrl-AZ мс-BN UZ-Cyrl-UZ ар-EG ZH-HK де-AT ан-AU ES-ES FR-CA стер-Cyrl-CS ар-LY ZH-SG де-LU ан-CA эс-GT FR-СН ар-ДЗ ZH-MO гастроном ан-NZ ES-CR FR-LU ар-MA ан-IE эс-PA FR-MC ар-TN ан-ZA эс-DO ар-OM ан-JM эс-VE ар-YE ан-029 ES-CO ар-SY ан-BZ ES-РЕ ар-JO ан-TT ES-AR ар-LB ан-ZW эс-EC ар-KW ан-PH эс-CL ар-AE эс-UY ар-BH эс-PY ар-QA эс-BO эс-SV эс-HN эс-NI эс-PR см-НЕТ млрд-BD шс-Cyrl-Б.А. TG-Cyrl-TJ ан-SG ан-MY млн-Монг-CN PRS-AF шо-SN RW-RW, кут-GT с-RU GSW-FR со-FR RM-СН ми-NZ UG-CN уш-FR MoH-CA ARN-CL га-IE II-CN см-SE стер-Latn-BA QUZ-РЕ IG-NG KL-GL фунт-LU ба-RU НС-ZA QUZ-BO йо-NG смс-FI ха-Latn-NG ч-Б.А. фил-PH пс-AF FY-NL пе-NP утра-ET IU-Стаканчики-CA QUZ-EC си-ЛК SMJ-SE вот-LA км KH CY-RU бо-CN SE-SE SMJ-НЕТ как в мл-IN се-FI или-IN стер-Cyrl-BA млрд-IN ан-IN DSB-DE тк-TM SMN-FI ос-FR эс-US SE-НЕТ мт-MT шс-Latn-Б.А. ца-ZA XH-ZA т-ZA ПЗМ-Latn-ДЗ ЕД-Latn-CA HSB-DE

0 голосов
/ 23 марта 2010

Поскольку "de" является NeutralCulture, будет невозможно получить DayNames из DateTimeFormat, если вы попробуете CultureInfo.GetCultureInfo ("de").

Я бы посоветовал вам запустить CultureInfo.CreateSpecificCulture ("de") в этом случае, поскольку это создаст ненейтральную культуру ... в случае "de" я получил культуру "de-DE" назад от .NET богов: D

    CultureInfo tmp = CultureInfo.CreateSpecificCulture("de");

    string[] names = tmp.DateTimeFormat.DayNames;
    foreach(string name in names)
    {
        Console.WriteLine(name);
    }
0 голосов
/ 23 марта 2010

Попробуйте это: -

string culture = "ваша культура"

CultureInfo myCulture = new CultureInfo (культура);

DateTimeFormatInfo dtfi = myCulture .DateTimeFormat;

dayString = dtfi.GetDayName (ваша дата здесь ..);

Чарли Г

0 голосов
/ 23 марта 2010

Тусклые дни в виде строки () Тусклые месяцы в виде строки () Тусклый как новая система.Глобализация.КультураИнфо months = cul.DateTimeFormat.MonthNames days = cul.DateTimeFormat.DayNames

...