2010-12-21 16 views
9

Sto provando a convertire da stringa a DataTime ma si verifica un errore. Sto usando CONTRO 2003 .NET Framework 1,1Impossibile convertire implicitamente il tipo 'stringa' in 'System.DateTime'

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

Impossibile convertire implicitamente il tipo 'string' a 'System.DateTime'

uno può aiutarmi con la sintassi come risolvi l'errore

+1

Raccomandiamo vivamente di o passare almeno a '.NET 2.0'. Avrai bisogno di VS 2005+. Ma puoi usare VS 2010 gratis, che è comunque migliore di VS 2003! – abatishchev

risposta

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 per "DateTime.TryParse" –

5

Immagino di aver fatto un refuso - cambiare Convert.ToString(s2) a Convert.ToDateTime(s2).

+0

Ricevo un'eccezione Un'eccezione non gestita di tipo 'System.FormatException' si è verificata in mscorlib.dll Informazioni aggiuntive: La stringa non è stata riconosciuta come DateTime valido. – happysmile

+0

quando si cambia da modifica da Convert.ToString (s2) a Convert.ToDateTime (s2) – happysmile

+0

È meglio provare con DateTime.Parse(). Ciò risolverà alcuni degli errori. Sembra che Convert() stia piangendo il 23/11/2010 dove pensa che 23 siano un mese. – Pradeep

2

Provare DateTime.Parse(...) o DateTime.ParseExact(...) se è necessario specificare il formato.

4

Si dovrebbe utilizzare DateTime.Parse o DateTime.ParseExact.

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

Entrambi hanno TryXXX varianti che richiedono che passano in un parametro out, ma non sarà un'eccezione se il parsing fallisce:

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 concordato in tale data –

+0

1. 'dt = new DataTime'; 2. 'dt = DateTime.Parse'; totale: istanza superflua – abatishchev

+0

@abatishchev - giustissimo. – Oded

1

DateTime.Parse("01/01 2010"); o utilizzare DateTime.TryParse se non si è sicuri si converte ogni volta, cioè. non sempre una data, ma a volte vuota.

+0

+1 ha concordato il numero –

3
DateTime dtnew = Convert.ToString(s2); 

problema è che la vostra conversione string s2 a stringa di nuovo e conservarla in DateTime variable

Prova questo:

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

È necessario modificare le virgolette doppie ("") a virgolette singole ('')

Problemi correlati