Comment obtenir dayNames de la langue que dans .NET
-
21-09-2019 - |
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?
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);
}