2010-12-21 31 views
9

Ich versuche, von Zeichenfolge in DataTime zu konvertieren, aber ein Fehler tritt auf. Ich verwende VS 2003, .NET Framework 1,1Kann Typ 'string' nicht implizit in 'System.DateTime' konvertieren

DateTime dt = Convert.ToDateTime("11/23/2010"); 
string s2 = dt.ToString("dd-MM-yyyy"); 
DateTime dtnew = Convert.ToString(s2); 

Kann Typ 'string' auf 'System.DateTime'

nicht implizit konvertieren

Kann mir jemand mir mit der Syntax helfen, wie man löse den Fehler.

+1

Strengstens empfehlen Sie t Wechseln Sie mindestens zu ".NET 2.0". Sie benötigen VS 2005+. Aber Sie können kostenlos VS 2010 verwenden, die sowieso besser als VS 2003 ist! – abatishchev

Antwort

12
string input = "21-12-2010"; // dd-MM-yyyy  
DateTime d; 
if (DateTime.TryParseExact(input, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out d)) 
{ 
    // use d 
} 
+0

+1 für 'DateTime.TryParse' –

5

Ich vermute, dass Sie einen Tippfehler gemacht haben - ändern Sie Convert.ToString(s2) zu Convert.ToDateTime(s2).

+0

Ich erhalte eine Ausnahme Eine nicht behandelte Ausnahme vom Typ 'System.FormatException' ist in mscorlib.dll aufgetreten. Weitere Informationen: Die Zeichenfolge wurde nicht als gültige DateTime erkannt. – happysmile

+0

bei Änderung von Convert.ToString (s2) zu Convert.ToDateTime (s2) – happysmile

+0

Sie sollten besser mit DateTime.Parse() versuchen. Das wird einige der Fehler abstellen. Scheint wie Convert() am 11/23/2010 weinen, wo es 23 ist ein Monat denkt. – Pradeep

2

Versuchen Sie DateTime.Parse(...) oder DateTime.ParseExact(...), wenn Sie das Format angeben müssen.

4

Sie sollten DateTime.Parse oder DateTime.ParseExact verwenden.

DateTime dt= DateTime.Parse("11/23/2010"); 
string s2=dt.ToString("dd-MM-yyyy"); 
DateTime dtnew = DateTime.Parse(s2); 

haben beide TryXXX-Varianten, die in einem Out-Parameter erfordern vorbei, aber nicht eine Ausnahme aus, wenn der Parse fehlschlägt:

DateTime dt; 
if(td = DateTime.TryParse("11/23/2010", out td)) 
{ 
    string s2=dt.ToString("dd-MM-yyyy"); 
    DateTime dtnew = DateTime.Parse(s2); 
} 
+1

+1 hier vereinbart –

+0

1. 'dt = new DataTime'; 2. 'dt = DateTime.Parse'; total: überflüssige Instanziierung – abatishchev

+0

@abatiishchev - ganz richtig. – Oded

1

DateTime.Parse("01/01 2010"); oder DateTime.TryParse verwenden, wenn Sie nicht sicher sind, es konvertiert jedes Mal, dh. nicht immer ein Datum, aber manchmal leer.

+0

+1 vereinbart dort –

3
DateTime dtnew = Convert.ToString(s2); 

Problem ist, dass Ihr string s2 bespannen wieder und speichern sie in DateTime variable

Versuchen Sie, diese Umwandlung:

doppelte Anführungszeichen
DateTime dt = Convert.ToDateTime("11/23/2010"); 
string s2 = dt.ToString("dd-MM-yyyy"); 
DateTime dtnew = Convert.ToDateTime(s2); 
-1

Sie müssen sich ändern ("") zu Apostrophe ('')

Verwandte Themen