String.FormatException mit DateTime in nicht US-Kultur

8

Ich erhalte eine String.FormatException, die versucht, eine Zeichenkette zu konvertieren / zu analysieren, wenn die Kultur anders als nicht US ist. Die seltsame Sache ist, dass die Zeichenkette erzeugt wurde, indem man dasselbe Format und dieselbe Kultur anwendete wie die, die verwendet wurden, um sie wieder in eine Zeichenkette zu zerlegen. Im folgenden Code werden alle diese Versionen fehlschlagen:

%Vor%

Beachten Sie, dass die Zeichenfolge für en-US "25 Feb 2010" lautet. Die Zeichenfolge für ja-JP ist "25 2 2010".

Irgendeine Idee, wie man "25 2 2010" wieder in ein Date bringt?

Vielen Dank im Voraus.

Edit1: Ich sollte beachten, dass die japanische Kultur hier nur als Beispiel fest codiert ist. Ich brauche das wirklich, um mit der Kultur zu arbeiten, die vom Benutzer eingestellt wird. Was ich brauche, ist eine Lösung, bei der das Format für die Datumszeit unabhängig von der Kultur des Benutzers funktioniert. Ich denke, das einzelne M macht es.

Edit 2: M funktioniert nicht für Englisch. Kennt jemand eine Format-Zeichenfolge, die für alle Kulturen funktioniert?

    
sydneyos 25.02.2010, 22:06
quelle

4 Antworten

3

Wenn Sie ändern:

%Vor%

bis

%Vor%

Das Datum wird korrekt analysiert.

Beachten Sie, dass Sie in Ihrem Beispiel eine Kultur (ja-JP) verwenden, um in eine Zeichenfolge zu konvertieren, aber eine andere Kultur, die aus einer Zeichenfolge konvertiert werden soll. Ein weiteres Problem ist, dass String.Format eine zusammengesetzte Formatzeichenfolge akzeptiert ( "My string to format - {0:dd MMM yyyy}" ), aber DateTime.ParseExact erwartet nur das Datumsformat.

    
João Angelo 25.02.2010, 22:19
quelle
0

Versuchen Sie, ein einzelnes M zu verwenden, wenn Sie das Datum analysieren. Das wird im Beispiel für das MonthDayPattern für die japanische Kultur verwendet .

%Vor%     
tvanfosson 25.02.2010 22:14
quelle
0
%Vor%     
šljaker 25.02.2010 22:20
quelle
0

Das Formatmuster, das Sie an DateTime.ParseExact übergeben, muss nur das Datumsmuster ohne Platzhalter sein. Und für die JP-Kultur müssen Sie nur ein M verwenden, da die Datumsangaben durch Zahlen dargestellt werden, auch wenn MMM bei der Umwandlung in eine Zeichenfolge angegeben wird.

%Vor%     
Samuel Neff 25.02.2010 22:24
quelle

Tags und Links