2009-05-19 3 views
3

Ich habe einen Webserver in der Schweiz, der sowohl der amerikanischen Region als auch der europäischen Region dienen soll. Wenn ein Datum aus Nord- und Südamerika angezeigt wird, wird das Datum durch einen Punkt und nicht durch einen Schrägstrich getrennt.Überschreibe das Standard-Datumstrennzeichen in .net

In einigen Fällen möchte ich den Zeitraum verwenden, wenn sie europäisch sind, in anderen möchte ich den Schrägstrich verwenden. Wenn ich die Formatzeichenfolge für die Verwendung eines Schrägstrichs festlege, wird sie in einen Zeitraum konvertiert, der auf den Computereinstellungen basiert. Was muss ich tun, um die regionalen Einstellungen pro Benutzer festzulegen (der Benutzer muss sich anmelden und ich weiß, aus welcher Region er kommt).

Antwort

5

Die Globalisierung in ASP.NET sollte alles für Sie tun. Siehe this MSDN article mit dem Titel . Vorgehensweise: Festlegen der Kultur und UI-Kultur für die Globalisierung der ASP.NET-Webseite. Dies sollte genau das sein, was Sie wollen, da Sie einfach die aktuelle (UI) Kultur für den aktuellen Thread festlegen müssen, wenn sich der Benutzer anmeldet. Sie können dann date.ToString() aufrufen und die Textdarstellung im richtigen Format zurückgeben.

Gleichwertig, könnten Sie so etwas tun:

var culture = System.Globalization.CultureInfo.GetCultureInfo("en-GB"); 
var dateString = date.ToString(culture.DateTimeFormat); 

Aber es ist wirklich nur das Gleiche manuell zu tun, und sind weit weniger elegant. Sie können auch das ASP.NET-Framework für Globalisierung hier verwenden.

2

einen Format-String mit DateTime.ToString(), wie folgt verwenden:

DateTime.Now.ToString("MM/dd/yyyy"); 

In diesem Fall ist das/Zeichen bedeutet "für die aktuelle Kultur das Datumstrenn verwenden.". Noch besser: Sie können einfach DateTime.Now.ToShortDateString() anrufen, um das kurze Datumsformat des lokalen Systems zu verwenden.

Es gibt mehr Hilfe bei der Lokalisierung im Namespace System.Globalization.

Jetzt ist der Trick: Ihr 'lokales' System ist Ihr Webserver, und das bedeutet, dass es immer das Schweizer Format verwendet. Sie möchten also auch eine IFormatProvider übergeben, um dem System mitzuteilen, welche Kultur verwendet werden soll. Das wäre in etwa so aussehen:

DateTime.Now.ToString(System.Globalization.CultureInfo.GetCultureInfo("en-US")); 
3

Wenn die aktuelle Kultur der Zeit als Datumstrenn verwendet, dann können Sie mit einem Schrägstrich angezeigt werden mit

C#

date.ToString(@"dd\/MM\/yyyy"); 

VB

date.ToString("dd\/MM\/yyyy") 
+0

Das ist gut für alle zu wissen.Programmierer verwenden oft "/", wenn sie die Funktionalität von "\ /" beabsichtigen (hauptsächlich, um das Format zu zwingen, "/" anstelle von irgendetwas anderem zu verwenden.) –

1

Ich habe keine Notwendigkeit zu verwenden, es hatte aber Datetime hat eingebaute in Kulturinformationen, die Sie verwenden können:

DateTime dt = DateTime.Now; 
dt.ToString(System.Globalization.CultureInfo.GetCultureInfo("fr-CH")); 

this at MSDN See. Nehmen Sie einfach die Kultur Ihres Benutzers auf ("fr-CH", "en-US", etc.), dann können Sie mehr als nur USA gegen Schweiz machen.

Alternativ glaube ich, dass Sie Ihre eigenen Kulturinformationen erstellen können, um Daten korrekt zu formatieren, aber ich musste das nie wieder tun.