Ich erhalte eine String.FormatException, die versucht, eine Zeichenfolge zu konvertieren/parsen, wenn die Kultur anders als nicht-US ist. Das Seltsame ist, dass die Zeichenfolge war generiert durch die Anwendung des gleichen Formats und der gleichen Kultur, die für die Umwandlung in eine Zeichenkette verwendet werden. In dem nachstehenden Code schlagen alle diese Versionen fehl:
const string culture = "ja-JP";
const string format = "dd MMM yyyy"; //error in orignal post included {0:}
CultureInfo info = new CultureInfo(culture);
Thread.CurrentThread.CurrentCulture = info;
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(culture);
//string toParse = String.Format(info, format, DateTime.Now); //error in original post
string toParse = DateTime.Now.ToString(format);
System.Diagnostics.Debug.WriteLine(string.Format("Culture format = {0}, Date = {1}", culture, toParse));
try
{
DateTime output = DateTime.ParseExact(toParse, format, CultureInfo.InvariantCulture);
//DateTime output = DateTime.ParseExact(toParse, format, info);
//DateTime output = DateTime.ParseExact(toParse, format, info, DateTimeStyles.None);
//DateTime output = Convert.ToDateTime(toParse, info);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
Die Zeichenfolge für en-US
es "25 Feb 2010"
.
Die Zeichenfolge für ja-JP
es "25 2 2010"
.
Haben Sie eine Idee, wie man den "25. 2. 2010" wieder in ein Datum umwandeln kann?
Vielen Dank im Voraus.
Bearbeiten 1 : Ich sollte anmerken, dass die japanische Kultur hier nur als Beispiel fest einkodiert ist. Ich brauche dies wirklich mit was auch immer Kultur durch den Benutzer eingestellt wird zu arbeiten. Was ich brauche, ist eine Lösung, bei der das Datums-/Zeitformat unabhängig von der Kultur des Benutzers funktioniert. Ich denke, das einzelne M reicht aus.
Bearbeiten 2 : M
funktioniert nicht für Englisch. Kennt jemand eine Formatzeichenfolge, die für alle Kulturen funktioniert?