Scope:DateTime.TryParseExact arbeitet nur in „One Way“
Ich habe versucht, eine super-tolerant
DateTime.Parse Routine zu entwickeln, so entschied ich mich am meisten zu geben „weit verbreiteten“ formatiert einen Versuch besser verstehe die format masks
.
Problem:
ich ein bestimmtes Format festgelegt haben (String), die ich als myDate.ToString(format)
verwenden, und es wirkt Wunder. Das Problem ist, wenn ich die gleiche Zeichenfolge (Ergebnis der Operation .ToString(format)
) bekomme und es zurück an DateTime.TryParseExact (...)
füttere, schlägt es fehl.
-Code/Test:
System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture;
// Defining Format and Testing it via "DateTime.ToString(format)"
string format = "MM/dd/yyyy HH:mm:ss tt";
string dtNow = DateTime.Now.ToString (format);
Console.WriteLine (dtNow);
// Trying to Parse DateTime on the same Format defined Above
DateTime time;
if (DateTime.TryParseExact (dtNow, format, provider, System.Globalization.DateTimeStyles.None, out time))
{
// If TryParseExact Worked
Console.WriteLine ("Result: " + time.ToString());
}
else
{
// If TryParseExact Failed
Console.WriteLine ("Failed to Parse Date");
}
Ausgang ist: "Failed to Parse Date".
Frage:
Warum kann ich die format
Zeichenfolge verwenden, um ein bestimmtes Datum als Text zu formatieren, aber ich kann nicht denselben format
verwenden, um die Zeichenfolge an ein Datumsobjekt zurückzugeben?
EDIT:
Ich habe einen Teil meiner Methode this example hinzugefügt, und ich möchte wissen, warum der „ParseDate“ -Methode ein richtiges Datum zurückzubringen, nicht gegeben, dass der „String“ in der ist richtiges Format.
Was ist Ihre 'CurrentCulture'? –
Versuchen Sie 'string dtNow = DateTime.Now.ToString (Format, Provider);' Fügen Sie die Kultur hinzu, wenn Sie in eine Zeichenkette konvertieren. –
Bestätigt, dass es mit 'pt-BR' (Portugiesisch (Brasilien)) fehlschlägt. –