2010-12-21 21 views
9

Próbuję przekonwertować ciąg na DataTime, ale wystąpił błąd. używam VS 2003, .NET Framework 1.1Nie można niejawnie przekonwertować typu "ciąg" na "System.DateTime"

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

nie można niejawnie przekonwertować typu 'string' do 'System.DateTime'

Może ktoś mi pomóc mi ze składnią jak rozwiązać błąd.

+1

Ściśle polecam t o przełącz przynajmniej na '.NET 2.0'. Będziesz potrzebował VS 2005+. Ale możesz użyć darmowego VS 2010, który jest w każdym razie lepszy niż VS 2003! – abatishchev

Odpowiedz

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

5

Zgaduję, że wprowadzono literówkę - zmień Convert.ToString(s2) na Convert.ToDateTime(s2).

+0

Otrzymuję wyjątek W pliku mscorlib.dll wystąpił nieobsługiwany wyjątek typu "System.FormatException". Dodatkowe informacje: Ciąg nie został rozpoznany jako poprawny obiekt DateTime. – happysmile

+0

po zmianie ze zmiany z Convert.ToString (s2) na Convert.ToDateTime (s2) – happysmile

+0

Lepiej spróbuj z DateTime.Parse(). To będzie zwolnić niektóre z błędów. Wygląda na to, że Convert() płacze w dniu 23.11.2010, gdzie uważa, że ​​23 to miesiąc. – Pradeep

2

Wypróbuj DateTime.Parse(...) lub DateTime.ParseExact(...), jeśli chcesz określić format.

4

Powinieneś używać DateTime.Parse lub DateTime.ParseExact.

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

Obie mają TryXXX warianty, które wymagają podjęcia w parametr wyjściowy, ale nie rzuci wyjątek, jeśli nie parse:

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 uzgodniony tam –

+0

1. 'dt = new DataTime'; 2. 'dt = DateTime.Parse'; total: zbyteczna instancja – abatishchev

+0

@abatishchev - całkiem dobrze. – Oded

1

DateTime.Parse("01/01 2010"); lub użyj DateTime.TryParse jeśli nie jesteś pewien, konwertuje za każdym razem, tj. nie zawsze jest to data, ale czasami puste.

+0

+1 uzgodniono tam –

3
DateTime dtnew = Convert.ToString(s2); 

problemem jest to, że przekształcenie string s2 ciąg ponownie i przechowywać go w DateTime variable

Spróbuj tego:

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

Musisz zmienić cudzysłów ("") do apostrofami ('')

Powiązane problemy