Come arrivare dayNames dal linguaggio solo in .NET
-
21-09-2019 - |
Domanda
Si supponga che ho solo un codice del paese (it, de, fr) e ho bisogno di visualizzare i giorni della settimana in questa lingua. So di RegionInfo e CultureInfo - ma non riesco a trovare una soluzione. Se creo un Info nazionali da (per un esempio) "en" Non ho informazioni DateTime in esso. Sarebbe anche OK per basta prendere la prima regione corrispondente. Per un esempio en-US per en o de-DE per de.
Non so se ci sono differenze di dayNames ma so che ci sono alcuni per i mesi. de-DE Febbraio - de-AT Feber - in ogni caso non mi interessa. Evento se può essere "un po 'diverso" (per vedere Febbraio invece di Feber) -. È ancora tedesco
E questo è quello che voglio achive - ottenere en una scrittura Lunedi - ottenere de e scrivere Montag ...
C'è un modo per creare una regione solo da un codice di linguaggio?
Soluzione
Questo pezzo può essere utile: per andare da "en" al CultureInfo, un modo più veloce è
CultureInfo ci = CultureInfo.CreateSpecificCulture("en")
Per la seconda parte, credo che si sta chiedendo i nomi dei giorni, in modo da vorrei scrivere
string[] names = ci.DateTimeFormat.DayNames
Altri suggerimenti
E 'di solito quando si dice "non mi interessa" che si avvia a combattere le API.
In ogni caso, questo dovrebbe funzionare:
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);
Questo vi darà un elenco di culture:
Dim ci As CultureInfo
For Each ci In CultureInfo.GetCultures(CultureTypes.SpecificCultures)
Console.WriteLine(ci.Name)
Next
USCITA: ar-SA bg-BG ca-ES zh-TW cs-CZ DA-DK de-DE el-GR it-IT fi-FI fr-FR lui-IL hu-HU IS-IS esso esso ja-JP ko-KR nl-NL nb-NO pl-PL pt-BR RO-RO ru-RU hr-HR sk-SK sq-AL sv-SE th-TH tr-TR ur-PK L'ho fatto uk-UA be-BY sl-SI et-EE lv-LV lt-LT giusto VI-VN hy-AM az-Latn-AZ es Eu mk-MK af-ZA ka-GE FO-FO hi-IN ms-MY kk-KZ ky-KG sw-KE UZ-Latn-UZ tt-RU dolore 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 it-IT es-MX fr-BE prurito 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 gastronomia 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-VE 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 hr-BA fil-PH ps-AF fy-NL ne-NP am-ET IU-lattine-CA quz-CE seta smj-SE lo-LA km-KH cy-GB bo-CN se-SE smj-NO come in ml-IN se-FI o-IN SR-Cyrl-BA bn-IN en-IN DSB-DE tk-TM FI-SMN oc-FR es-USA 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"))
Sopra codice stamperà Lunedi come (locale Chinise) 星期一.
giorni fiochi come stringa () mesi Dim come stringa () cul fioco come nuovo System.Globalization.CultureInfo ( "de-DE") mesi = cul.DateTimeFormat.MonthNames giorni = cul.DateTimeFormat.DayNames
Prova questo: -
cultura stringa = "la vostra cultura"
CultureInfo myCulture = new CultureInfo (cultura);
DateTimeFormatInfo DTFI = myCulture .DateTimeFormat;
dayString = dtfi.GetDayName (la data di qui ..);
Charlie G
"de" è una NeutralCulture non sarà possibile ottenere i dayNames fuori dalla DateTimeFormat se si tenta CultureInfo.GetCultureInfo ( "de").
Vorrei suggerire che si esegue il CultureInfo.CreateSpecificCulture ( "de"), in questo caso, in quanto si creerà una cultura non neutro ... in caso di "de" Ho avuto una cultura di "de-DE" indietro dagli dei NET: D
CultureInfo tmp = CultureInfo.CreateSpecificCulture("de");
string[] names = tmp.DateTimeFormat.DayNames;
foreach(string name in names)
{
Console.WriteLine(name);
}