2013-08-21 8 views
10

Methode TryParseExact im Codeblock unter true zurückgibt.
Ich würde gerne wissen, warum.
Ich denke, dieses Datum "2013.03.12" ist ungültig, weil dies nicht durch Schrägstrich, sondern Punkt getrennt ist.TryParseExact gibt false zurück, obwohl ich nicht weiß, warum

Nachdem ich die CultureInfo"de-De"-"en-US" geändert, gibt die Methode false. Dies könnte ein Hinweis sein, aber ich weiß immer noch nicht, warum das passiert.

var format = new string[] { "yyyy/MM/dd" }; 
var parsed = new DateTime(); 
var result = DateTime.TryParseExact("2013.03.12", format, 
      new CultureInfo("de-DE"), DateTimeStyles.None, out parsed); 
+0

BTW: '2013.03.12' ist kein gültiges/Deutschland üblichen Datumsformat. "12.03.2013" wäre. –

Antwort

17

Ich denke, Ihr aktuelles DateSeparator ist . (dot) und / selbst automatisch ersetzen.

/ seperator hat eine besondere Bedeutung von "ersetzen mich mit dem Datum Separators aktuellen Kultur"

CultureInfo c = new CultureInfo("de-DE"); 
Console.WriteLine(c.DateTimeFormat.DateSeparator); //Prints . (dot) 

Werfen Sie einen Blick auf The "/" Custom Format Specifier

+3

Sehr interessant, wusste nicht, dass –

+0

@lazyberezovsky Ja, ich war mir auch nicht bewusst seit Tim Schmelter [Punkte] (http://StackOverflow.com/Questions/17526239/Converting-Datetime-ToString/17526314 # comment25485437_17526239) diese Situation vor fast einem Monat. –

+1

Vielen Dank. Manchmal muss ich in dieser Spezifikation keine Formate nach Ländern definieren. – Nigiri

7

Als @Soner Gönül points out, die / als genommen "das Datum Trennzeichen" in custom format strings. Wenn Sie nur wollen / Zeichen akzeptieren, müssen Sie sie entkommen:

var format = new string[] { @"yyyy\/MM\/dd" }; 
+3

A @ bitte vor dem " – xanatos

+0

@xanatos - guter Fang. –

Verwandte Themen