2010-12-21 46 views
9

Tôi đang cố chuyển đổi từ chuỗi thành DataTime nhưng xảy ra lỗi. Tôi đang sử dụng VS 2003, .NET Framework 1,1Không thể chuyển đổi hoàn toàn loại 'chuỗi' thành 'System.DateTime'

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

Không thể ngầm chuyển đổi loại 'string' thành 'System.DateTime'

Bất kỳ một thể giúp tôi tôi với cú pháp như thế nào để giải quyết lỗi.

+1

Nghiêm túc giới thiệu bạn t o chuyển ít nhất thành '.NET 2.0'. Bạn sẽ cần VS 2005+. Nhưng bạn có thể sử dụng miễn phí VS 2010 mà là anyway thay vì tốt hơn so với VS 2003! – abatishchev

Trả lời

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 cho 'DateTime.TryParse' –

5

Tôi đoán bạn đã thực hiện lỗi đánh máy - thay đổi Convert.ToString(s2) thành Convert.ToDateTime(s2).

+0

Tôi đang nhận được một ngoại lệ Một ngoại lệ unhandled loại 'System.FormatException' xảy ra trong mscorlib.dll Thông tin bổ sung: Chuỗi không được công nhận là một DateTime hợp lệ. – happysmile

+0

khi thay đổi từ thay đổi từ Convert.ToString (s2) sang Convert.ToDateTime (s2) – happysmile

+0

Bạn nên thử với DateTime.Parse(). Điều đó sẽ giải quyết một số lỗi. Có vẻ như Convert() đang khóc vào ngày 23/2/2010, nơi mà nó đang nghĩ 23 là một tháng. – Pradeep

2

Hãy thử DateTime.Parse(...) hoặc DateTime.ParseExact(...) nếu bạn cần chỉ định định dạng.

4

Bạn nên sử dụng DateTime.Parse hoặc DateTime.ParseExact.

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

Cả hai đều có TryXXX biến đòi hỏi phải đi qua trong một tham số ra, nhưng sẽ không ném một ngoại lệ nếu phân tích thất bại:

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 đã đồng ý ở đó –

+0

1. 'dt = new DataTime'; 2. 'dt = DateTime.Parse'; tổng số: instantfluous instantiation – abatishchev

+0

@abatishchev - hoàn toàn đúng. – Oded

1

DateTime.Parse("01/01 2010"); hoặc sử dụng DateTime.TryParse nếu bạn không chắc chắn nó chuyển đổi mọi lúc, tức là. không phải lúc nào cũng là ngày, nhưng đôi khi trống.

+0

+1 đã đồng ý ở đó –

3
DateTime dtnew = Convert.ToString(s2); 

vấn đề là bạn chuyển đổi string s2 chuỗi lại và lưu nó trong DateTime variable

Hãy thử điều này:

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

Bạn cần thay đổi dấu ngoặc kép ("") để dấu nháy đơn ('')

Các vấn đề liên quan