Versuchen Sie, diese
private static string FormatDate(string sDate)
{
// "6/16/1989"
//mysql format 06-16-1989
DateTime date;
if (!DateTime.TryParseExact(sDate, new string[] { "MM/dd/yyyy", "M/dd/yyyy", "MM/d/yyyy" }, System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.AdjustToUniversal, out date))
{
return string.Empty;
}
return date.ToString("MM-dd-yyyy");
}
Dies würde auch funktionieren, wenn Sie nur einen Standard TryParse verwenden wollte:
private static string FormatDate(string sDate)
{
// "6/16/1989"
//mysql format 06-16-1989
var usCultureInfo = System.Globalization.CultureInfo.GetCultureInfo(0x0409);
DateTime date;
if (!DateTime.TryParse(sDate, usCultureInfo, System.Globalization.DateTimeStyles.AdjustToUniversal, out date))
{
return string.Empty;
}
return date.ToString("MM-dd-yyyy");
}
Beachten Sie, dass diese Beispiele einen leeren String zurück, wenn das Datum nicht verstanden .
Aber denken Sie daran, den MySQL-Treiber und parametrisierte Abfragen zu verwenden, da dies Ihren Code sicherer macht und einfacher zu handhaben ist.
Teile ist kein Datetime-Objekt. Sie möchten 'DateTime.ParseExact (sDate," MM/TT/JJJJ ", System.Globalization.CultureInfo.CurrentCulture);' um das Datum als C# Datetime-Objekt zu erhalten. Wenn Sie MySQL verwenden, sollten Sie den .NET-MySQL-Treiber und [parametrisierte Abfragen] (http://stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharp) verwenden (um dies zu verhindern) SQL-Injektion). Ich bin nicht sicher, warum Sie mit Daten in einem Klartextformat umgehen müssen. – john
Ich habe eine Antwort mit einem korrekten ParseExact-Beispiel hinzugefügt. – john