2012-04-02 3 views

Antwort

9

Nun, Monatsnamen können auch lokalisiert werden. Und vielleicht werden die Jahre in einigen exotischen Kulturen auch anders gezählt.

EDIT:
Beispiel:

string x = "Montag, 2. April 2012"; 
DateTime dt1, dt2; 
bool r1 = DateTime.TryParseExact(x, "D", new CultureInfo("de-DE"), 0, out dt1); 
bool r2 = DateTime.TryParseExact(x, "D", new CultureInfo("en-US"), 0, out dt2); 

(r1 == true, r2 == false).

Oder umgekehrt:

string y = "Monday, April 02, 2012"; 
DateTime dt3, dt3; 
bool r3 = DateTime.TryParseExact(y, "D", new CultureInfo("de-DE"), 0, out dt3); 
bool r4 = DateTime.TryParseExact(y, "D", new CultureInfo("en-US"), 0, out dt4); 

(r3 == false, r2 == true).

+0

Beispiel bitte ??????? –

+0

@Royi: schau dir die bearbeitete Antwort an. – Vlad

+1

es ist Deutsch ('de-DE') für Montag (aber vielleicht könntest du das Bild mit uns teilen?) – Vlad

4

Da die Formatzeichenfolge nicht literal ist. Zum Beispiel haben Sie "/" und ":" verwendet, aber für die Eingabezeichenfolge müssen die Trennzeichen date und time verwendet werden, die von CultureInfo geliefert werden.

Stellen Sie sich dieses Format-String: M/d/yyyy
Diese Eingänge sind alle gültig:

  • 04/02/2012 (für invariante Kultur, USA);
  • 04.02.2012 (Finnland)
  • 04-02-2012 (für Marokko)

Darüber hinaus ist der einfache "M" Spezifizierer kann sein [1..12] oder [1..13] , abhängig vom Kalender selbst (siehe MSDN).

Als "Kerze auf dem Kuchen" ist die Funktion generisch, so dass Sie in der Formatzeichenfolge einen lokalisierten (oder länderabhängigen) Wert benötigen (denken Sie an Wochentagnamen oder das angegebene Jahr, z. B. in Chinesisch oder Japanisch) .

+0

Ich verstehe nicht, können Sie bitte erklären? –

+0

Die Zeichenkette "M/d/yyyy" ist ein Formatbezeichner für "4/2/2012" in der US-amerikanischen Kultur, ist aber eine gültige Eingabe, zB "4-2-2012" für die arabische Kultur.Das Zeichen "/" bedeutet "das Standarddatums-Trennzeichen für die gegebene Kultur". Jedenfalls habe ich die Antwort mit einem Beispiel aktualisiert. –

+0

aber ** im ** sag ihm was die seperators sind! Ich schrieb x/xx/xxx so sein '/' ... –

0

Sie benötigen es, um die Kultur zu sagen, denn wenn man es das Format dd-mmm-yyyy passieren dann in 01/05/2012 passieren

Englisch In diesem 01-May-2012

sein könnte

Aber in einer anderen Kultur wäre es 01-Mai-2012

Verwandte Themen