Frage

Was ist der beste Weg, einen Datumsformatdeskriptor zu lokalisieren?

Wie jeder aus einer Kultur, die nicht das Format MM/TT/JJJJ verwendet, weiß, ist es ärgerlich, Daten in diesem Format eingeben zu müssen.Das .NET-Framework bietet einige sehr gute Lokalisierungsunterstützung, daher ist es trivial, Datumsangaben entsprechend der Benutzerkultur zu analysieren, aber oft möchten Sie auch einen hilfreichen Hinweis auf das erforderliche Format anzeigen (insbesondere um zwischen JJ und JJJJ zu unterscheiden, die austauschbar sind). die meisten Kulturen).

Was ist der beste Weg, dies so zu tun, dass es für die meisten Benutzer sinnvoll ist (z. B.dd/M/yyy ist aufgrund der geänderten Groß-/Kleinschreibung und des Wechsels zwischen einem und zwei Buchstaben verwirrend.

War es hilfreich?

Lösung 3

Hier ist meine aktuelle Methode.Irgendwelche Vorschläge?

Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)");
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)");
CultureInfo currentCulture = CultureInfo.CurrentUICulture;

// If the culture is netural there is no date pattern to use, so use the default.
if (currentCulture.IsNeutralCulture)
{
    currentCulture = CultureInfo.InvariantCulture;
}

// Massage the format into a more general user friendly form.
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower();
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm");
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd");

Andere Tipps

Verwenden Sie einfach ISO-8601.Es ist ein internationaler Standard.

Date and time (current at page generation) expressed according to ISO 8601:
Date:                           2014-07-05
Combined date and time in UTC:  2014-07-05T04:00:25+00:00
                                2014-07-05T04:00:25Z
Week:                           2014-W27
Date with week number:          2014-W27-6
Ordinal date:                   2014-186

Ich muss dem OP zustimmen, dass die „falschen“ Datumsangaben wirklich zu meiner TT/MM/JJJJ-Erziehung passen, und ich finde, dass die Arbeit mit ISO 8601-Daten und -Zeiten extrem einfach ist.Diesmal hat der Standard es richtig gemacht und engtech hat die offensichtliche Antwort, die keiner Lokalisierung bedarf.

Ich wollte das Geburtstags-Eingabeformular beim Stapelüberlauf als Fehler melden, weil es für die Mehrheit der Welt sehr nervig ist.

Das Problem mit internationalen Standards ist, dass sie so gut wie niemand anwendet.Ich versuche, wo ich kann, aber im wirklichen Leben bin ich gezwungen, fast überall TT/MM/JJJJ zu verwenden, was bedeutet, dass ich so daran gewöhnt bin, dass es immer ein bewusster Prozess ist, ISO-8601 zu verwenden.Für die Mehrheit der Leute, die nicht einmal versuchen, ISO-8601 zu verwenden, ist es noch schlimmer.Wenn man internationalisieren kann, wo man kann, ist das meiner Meinung nach ein großer Vorteil.

Wie wäre es mit der Angabe des Formats (MM/TT/JJJJ oder TT/MM/JJJJ) gefolgt von einem Ausdruck des heutigen Datums in der Kultur des Benutzers?MSDN hat einen Artikel darüber Formatieren einer DateTime für die Kultur der Person, unter Verwendung des CultureInfo-Objekts, das dabei hilfreich sein könnte.Eine Kombination des Formats (mit dem die meisten Menschen vertraut sind) in Kombination mit dem in diesem Format dargestellten aktuellen Datum sollte der Person einen ausreichenden Hinweis darauf geben, wie sie das Datum eingeben soll.(Fügen Sie auch eine Kalendersteuerung für diejenigen hinzu, die es immer noch nicht verstehen).

Eine kurze Form ist praktisch und hilft, Rechtschreibfehler zu vermeiden.Lokalisieren Sie es ggf., stellen Sie jedoch sicher, dass das erwartete Format angezeigt wird (lassen Sie den Benutzer nicht blind).Stellen Sie ein Steuerelement zur Datumsauswahl bereit Optional Hilfe beim Ausfüllen des Feldes.

Darüber hinaus könnte auch die spontane Analyse und die Anzeige des Datums in Langform hilfreich sein.

Beste Option:Ich würde stattdessen empfehlen, eine Standard-Datumsauswahl zu verwenden.

Alternative:Jedes Mal, wenn sich der Inhalt des Bearbeitungssteuerelements ändert, analysieren Sie ihn und zeigen Sie (in einem separaten Steuerelement?) das Langformat des Datums an (dh:Eingabe „04.03.09“ Anzeige „Ihre Eingabe:4. März 2009")

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top