2009-06-23 11 views
1

Aus irgendeinem Grund, ASP.NET-Code auf meinem Server kehrt nun ein Format von dd/MM/yyyy statt MM/tt/ wenn ich Datetime verwenden .ToString ("g").ändern ASP.NET Standardkultur für Datumsformatierung

Anstatt alle "g" Formatzeichenfolgen durch eine konkrete Formatzeichenfolge oder ein CultureInfo-Argument zu ersetzen, gibt es eine Möglichkeit, das Standardformat für kurze Daten in der gesamten Anwendung zu überschreiben.

Meine Präferenz ist eigentlich "JJJJ-MM-TT" als Standardformat, aber ich kann mit dem US-zentrischen MM/TT/JJJJ leben, wie alle Benutzer in den USA sind.

Klarstellung: Ich möchte nicht die gesamte Standardkultur ändern, was sich auf Dinge wie Währung und die Verwendung von Dezimalzahlen/Kommata bei der Formatierung von Zahlen auswirken könnte.

Ich möchte nur alle ToString ("g") aufrufen, um das ISO/IEC 8824-Datumsformat ("JJJJ-MM-TT") zu verwenden.

Ich konnte in meinem Code suchen und ersetzen, um eine CultureInfo in jedem ToString() -Aufruf zu erzwingen, aber das erscheint mir nicht als die wartungsfreundlichste Lösung.

Meine aktuelle Lösung ist, dass ich eine statische Methode zum Formatieren eines Datums definiert habe, und ich rufe es anstelle von ToString() über meine gesamte Codebasis. Aber wenn ich das irgendwo im Code vergessen habe, werde ich wieder ein doof Date haben.

Antwort

0

Die Einstellung der Kultur war keine Option und war auch nicht von den regionalen Einstellungen des Servers abhängig.

ich am Ende eine Hilfsfunktion für die Formatierung Daten Schreiben:

Public Shared Function FormatShortDate(ByVal d As Date) As String 
    If d=#1/1/0001# Then Return "" 
    If d=#1/1/1900# Then Return "" 
    'ISO/IEC 8824 date format 
    Return d.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture) 
End Function 

ich dies überall nenne ich ein Datum, um den Benutzer schieben muß. Es behandelt auch die Anzeige von Standard ("magischen") Daten.

Ich schrieb einige ähnliche Funktionen für und FormatShortDateTime und FormatLongDateTime.

+0

Die Antwort in der folgenden URL scheint passender zu sein als das Schreiben einer benutzerdefinierten Funktion: http://stackoverflow.com/questions/5505647/different-datetimeformat-for-the-same-culture-in-different-machines. Es ersetzt einfach das Kurzzeitmuster der aktuellen Kultur. Immer noch nicht das Ideal. – Feyyaz

1

Sie können die Standardkultur in der web.config (Anwendungsebene), der Seiten-Direktive oder der Steueranweisung festlegen.

Ich habe verschiedene Apps, wo die Masterseiten für verschiedene Kulturen eingerichtet sind, und die Seiten und Steuerelemente von dort erben.

+0

Schließen, aber dies wirkt sich auf * alle * Formate aus, die von der standardmäßigen CultureInfo und nicht nur von den DateTime-Formaten gesteuert werden. – richardtallent

-1

Sie können das kurze Datumsformat ändern, indem Sie die Einstellung in den Ländereinstellungen in der Systemsteuerung auf Ihrem Server ändern.