In einer ASP.NET-Anwendung setze ich die Kultur zu LV-LV. Alles ist in Ordnung, aber das voreingestellte kurze Datumsformat scheint "yyyy.mm.dd" zu sein. Der Kunde möchte, dass es "dd.mm.yyyy" ist (was eigentlich der LV-Standard ist). Woher erhält ASP.NET die Datums-/Uhrzeiteinstellungen für eine bestimmte Kultur? Wie können sie für eine einzelne Kultur verändert werden, ohne andere Kulturen zu beeinflussen (die Anwendung soll lokalisierbar sein)?Woher erhält ASP.NET seine Kultureinstellungen?
Antwort
Ich hatte mal ein ähnliches Problem und löste es mit:
DateTimeFormatInfo dtfi = (DateTimeFormatInfo)Thread.CurrentThread.CurrentCulture.DateTimeFormat.Clone();
dtfi.ShortDatePattern = "dd.MM.yyyy";
dtfi.DateSeparator = ".";
Thread.CurrentThread.CurrentCulture.DateTimeFormat = dtfi ;
Thread.CurrentThread.CurrentUICulture.DateTimeFormat = dtfi;
diese Weise können Sie jede andere regionale Einstellung außer das Datumsformat zu halten bekommen.
Dieser Code lief tatsächlich auf OnLoad in unserer Basisklasse. Ich bin mir nicht sicher, ob das der beste Weg ist.
.Net ruft die Datums-/Uhrzeiteinstellungen für eine bestimmte Kultur aus der DateTimeFormatInfo-Klasse ab. Sie können die DateTimeFormat-Eigenschaft einer CultureInfo mit einer DateTimeFormatInfo festlegen, die Sie geändert haben. Wenn diese Kultur die aktuelle Kultur ist, können Sie sie auf der CurrentCulture festlegen. In beiden Fällen wirkt sich dies nur auf die von Ihnen erstellte CultureInfo aus und wirkt sich nicht auf andere Kulturen aus. (Jeder Aufruf von CultureInfo.GetCultureInfo ("lv-LV") wird diese Änderungen nicht übernehmen, da es sich um eine schreibgeschützte Kopie handelt.) Sie müssen CultureInfo nicht unbedingt an eine DateTime-Formatierungsmethode übergeben (ToString, ParseExact)) - Sie können das explizite Muster oder die DateTimeFormatInfo übergeben.
CultureInfo lvLV = new CultureInfo("lv-LV");
DateTimeFormatInfo lvLVdtfi = (DateTimeFormatInfo) lvLV.DateTimeFormat.Clone();
lvLVdtfi.ShortDatePattern = "dd.MM.yyyy";
lvLV.DateTimeFormat = lvLVdtfi;
DateTime.Now.ToString("d", lvLV); // short date pattern from modified lv-LV CultureInfo
DateTime.Now.ToString("d", lvLVdtfi); // short date pattern from modified DateTimeFormatInfo
DateTime.Now.ToString("dd.MM.yyyy"); // explicit short date pattern
Wenn lv-LV die aktuelle Windows-Kultur ist, dann können Sie eine Benutzerumgehung gesetzt (Verwendung intl.cpl die Regions- und Sprachoptionen Bedienfeld und das Format anpassen) und der Rahmen wird diese abholen.
- 1. Woher erhält der ASP.NET-Entwicklungsserver seine Bilder?
- 2. Woher erhält PHP seine Einstellungen, wenn keine Konfigurationsdatei geladen ist?
- 3. Woher erhält Glibc seine Datenbank mit Unicode-Attributen?
- 4. Woher erhält Git Bash all seine Host-Mappings?
- 5. ASP.NET kann ein Objekt erhält seine Attribute
- 6. Atmosphäre: Server erhält seine Nachricht
- 7. Woher bezieht (char) int seine Symbole?
- 8. Woher erhält Pythons pydoc-Hilfe ihren Inhalt?
- 9. woher erhält Paperclip den Namen der Originaldatei?
- 10. JavaScript: Datumformat aus den Kultureinstellungen abrufen
- 11. ASP.NET 2.0 Website erhält ThreadAbortException
- 12. Woher erhält ActiveRecord :: Associations :: CollectionProxy die Instanzmethode .each?
- 13. Woher erhält der Befehl "nugget pack project" die Versionsinfo?
- 14. Woher erhält Visual Studio die Daten intellisense und Namespace-Abschluss
- 15. Woher erhält der RichTextBox-Editor von WPF die Rechtschreibprüfung?
- 16. NSURLConnection-Delegat erhält seine didReceiveAuthenticationChallenge-Methode im Serverstatus nicht 401
- 17. Meine asp.net-Steuerelement verliert seine Eigenschaftswerte?
- 18. ASP.NET AjaxControlToolkit.ComboBox zeigt nicht seine Artikel
- 19. Wie ändert man Standard-Kultureinstellungen in einer .net Webanwendung?
- 20. RxJS Observable.concat: Woher weiß man, woher das nächste Ergebnis kommt?
- 21. Woher weiß ASP.NET MVC, dass eine Methode eine Aktionsmethode ist?
- 22. Woher nehmen Formularfelder in ASP.Net MVC ihre Werte?
- 23. Wie kann ich feststellen, woher der Benutzer in asp.net kam?
- 24. woher bekomme ich eine client_id?
- 25. asp.net: eines Objekts Ereignis von einem Usercontrol auf seine Eltern
- 26. DDD Entity und seine Kennung
- 27. Woher erhält eine Funktion ihre Eingabe, wenn sie die Funktion als Argument übergeben?
- 28. Woher bekomme ich Entity Framework?
- 29. ASP.NET-Web-API-Hilfeseitenpaket erhält nicht alle API-Endpunkte
- 30. C# ASP.NET Wie erhält man Zeilengridview wenn templatefield click?
So etwas ist mir auch in den Sinn gekommen. Trotzdem scheint es irgendwie ... falsch zu sein. : D Ich mag keine Hardcoding. Vielleicht gibt es einige Systemregistrierungsschlüssel, die für diese Kultur geändert werden müssen? –
Das Problem damit ist, wenn einige Ihrer Benutzer das ISO-Standard-Datumsformat bevorzugen. –