Question

Supposons que je ne dispose que d'un code de pays (en, de, fr) et je dois afficher les jours de la semaine dans cette langue. Je sais RegionInfo et CultureInfo - mais je ne peux pas trouver une solution. Si je crée une info pays à partir (pour un exemple) « en » Je n'ai pas d'info DateTime en elle. Il serait également OK pour ne prendre que la première région correspondant. Pour un exemple en États-Unis pour en ou de-DE pour de.

Je ne sais pas s'il y a des différences dans dayNames mais je sais qu'il y en a pour les mois. de-DE Februar - de-AT Feber - de toute façon, je ne se soucient pas. Événement si elle peut être « un peu différent » (voir Februar au lieu de Feber) -. Il est encore allemand

Et voilà ce que je veux achive - obtenir en une écriture lundi - obtenir et dé écrire Montag ...

Y at-il un moyen de créer une région juste d'un code de langue?

Était-ce utile?

La solution

Cette pièce peut être utile: pour passer de « en » la CultureInfo, d'une manière plus rapide est

CultureInfo ci = CultureInfo.CreateSpecificCulture("en")

Pour la deuxième partie, je crois que vous demandez des noms de jour, de sorte que vous écrirais

string[] names = ci.DateTimeFormat.DayNames 

Autres conseils

Il est généralement quand vous dites « Je ne me soucie pas » que vous commencez à combattre les API.

Quoi qu'il en soit, cela devrait fonctionner:

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);

Cela vous donnera une liste des cultures:

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

SORTIE: ar-SA bg-BG ca-ES zh-TW cs-CZ da-DK de-DE el-GR en-US fi-FI F RFR he-IL hu-HU est-IS ça ça ja-JP ko-KR nl-NL nb-NO pl-PL pt-BR RO-ro ru-RU h-HR sk-SK sq-AL sv-SE e-TH tr-TR ur-PK J'ai fait uk-UA be-BY sl-SI et-EE LV-LV LT-LT juste vi-VN hy-AM az-Latn-AZ eu-ES mk-MK af-ZA ka-GE fo-FO Salut dans ms-MY kk-KZ ky-KG sw-KE uz-Latn-UZ tt-RU douleur gu-IN ta-IN te-IN kn-IN mr-IN sa-IN mn-MN gl-ES kok-IN Syr-SY dv-MV ar-IQ zh-CN de-CH fr-FR es-MX fr-BE démanger nl-BE nn-NO pt-PT sr-Latn-CS sv-FI az-Cyrl-AZ ms-BN uz-Cyrl-UZ ar-EG zh-HK de-AT en-AU es-ES fr-CA sr-Cyrl-CS ar-LY zh-SG de-LU en-CA es-GT fr-CH ar-DZ zh-MO épicerie fine en-NZ es-CR fr-LU ar-MA en-IE es-PA fr-MC ar-TN en-ZA es-DO ar-OM en-JM ES- ar-YE en-029 es-CO ar-SY en-BZ es-PE ar-JO en-TT es-AR ar-LB en-ZW es-CE ar-KW en-PH es-CL ar-AE es-UY ar-BH es-PY ar-QA es-BO es-SV es-HN es-NI es-PR sma-NO bn-BD bs-Cyrl-BA tg-Cyrl-TJ en-SG en-MY mn-Mong-CN prs-AF wo-SN rw-RW QUT-GT sah-RU GSW-FR co-FR rm-CH mi-NZ ug-CN br-FR moh-CA arn-CL ga-IE ii-CN sma-SE sr-Latn-BA QUZ-PE ig-NG kl-GL lb-LU ba-RU NSO-ZA QUZ-BO yo-NG sms-FI ha-Latn-NG h-BA fil-PH ps-AF FY-NL ne-NP am-ET iu-Cans-CA QUZ-CE soie SMJ-SE lo-LA km-KH cy-GB bo-CN se-SE SMJ-NO un péché ml-IN SE-FI ou-IN sr-Cyrl-BA bn-IN fr-FR dsb-DE tk-TM SMN-FI oc-FR es États-Unis SE-NO mt-MT bs-Latn-BA zu-ZA xh-ZA tn-ZA TZM-Latn-DZ iu-Latn-CA HSB-DE

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

code ci-dessus imprimera lundi comme 星期一 (locale chinise).

jours Dim As String ()         mois Dim As String ()         Dim cul As New System.Globalization.CultureInfo ( "de-DE")         mois = cul.DateTimeFormat.MonthNames     jours = cul.DateTimeFormat.DayNames

Essayez ceci: -

culture string = "votre culture"

CultureInfo myCulture = new CultureInfo (culture);

DateTimeFormatInfo dtfi = myCulture .DateTimeFormat;

= CHAINEJOUR dtfi.GetDayName (date ici ..);

Charlie G

"de" est un NeutralCulture il ne sera pas possible d'obtenir les dayNames de la DateTimeFormat si vous essayez CultureInfo.GetCultureInfo ( "de").

Je suggère que vous exécutez le CultureInfo.CreateSpecificCulture ( « de ») dans ce cas car il va créer une culture non neutre ... en cas de « de » Je suis une culture de « de-DE » retour des dieux .NET: D

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

    string[] names = tmp.DateTimeFormat.DayNames;
    foreach(string name in names)
    {
        Console.WriteLine(name);
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top