Ich ändere eine globalisierte Webanwendung, die gespeicherte CultureInfo für jeden angemeldeten Benutzer verwendet.
Der Client möchte, dass die Zeitdateneingabe lokalisiert wird. Die Anzeige ist kein Problem, da die Formatierung bereits verfügbar ist. Allerdings muss ich feststellen, ob die aktuelle culturinfo für 24 Stunden oder am / pm ist, damit ich die richtigen Eingabefelder anzeigen kann (nicht nur ein Textfeld).
Meine ursprüngliche Idee war, die DateTimeInfo-Eigenschaft von CultureInfo zu überprüfen und zu sehen, ob das ShortTimePattern ein Groß- oder Kleinbuchstaben h enthielt, aber das fühlte sich für mich nicht robust genug an.
Gibt es einen besseren Weg? Ich habe die Klasseneigenschaften von beiden gelesen, aber wenn ich etwas nicht vermisse, kann ich keine vorhandenen Methoden oder Eigenschaften sehen.
Ich glaube nicht, dass es einen besseren Weg gibt, diese Informationen zu erhalten. Das Zeitmuster für eine Kultur könnte alles enthalten (ein Benutzer könnte sogar eine benutzerdefinierte Kultur erstellen, in der ShortTimePattern "\ Hallo" ist und dann DateTime.ToString()
"Hallo" für jede Zeit zurückgibt). Wie könnte das Framework in diesem Fall feststellen, ob CultureInfo im 24-Stunden- oder 12-Stunden-Format vorliegt?
Also wird ein "normales" DateTimeFormatInfo.ShortTimePattern
notwendigerweise entweder ein 'h' oder ein 'H' enthalten, sonst wird die Stunde nicht angezeigt. Ich denke, du kannst deiner ursprünglichen Idee folgen und nachsehen. Sie können auch überprüfen, dass das 'h' oder 'H' nicht mit einem \ like in meinem "\ Hallo" Beispiel entkommen ist, weil das nicht die Stunde darstellen würde:)
Der robusteste Weg ist, zu überprüfen, ob DateTimeFormatInfo.AMDesignator ist eine leere Zeichenfolge.
%Vor%Die Überprüfung auf "H" / "h" scheint robuster zu sein als die Überprüfung des AM / PM-Designators. Ein gutes Beispiel ist en-gb: Die Zeitformat-Zeichenfolge ist HH: mm und die AM / PM-Bezeichner sind auf AM / PM festgelegt Windows zeigt die Uhrzeit im 24-Stunden-Format an! Dies scheint eine inkonsistente Definition zu sein, aber die Suche nach 'H' hat meinen Fehler behoben.
Tags und Links c# globalization cultureinfo