2011-11-19 41 views

Trả lời

24

mỗi một answer on another forum from Jon Skeet ...

Convert.ToDateTime sử dụng DateTime.Parse nội bộ, với văn hóa hiện tại - trừ khi bạn vượt qua nó null, trong trường hợp này nó sẽ trả về DateTime.MinValue.

Nếu bạn không chắc chắn chuỗi là một DateTime hợp lệ, sử dụng không và thay vào đó, sử dụng DateTime.TryParse()

Nếu bạn chắc chắn chuỗi là một DateTime hợp lệ, và bạn biết định dạng , bạn cũng có thể xem xét các phương thức DateTime.ParseExact() hoặc DateTime.TryParseExact().

+2

"Tóm lại, Convert.ToDateTime() loại bỏ mã cần thiết để đặt CultureInfo, mà bạn phải làm để sử dụng DateTime.Parse() " Điều đó không đúng. Bạn không cần phải đặt CultureInfo để sử dụng DateTime.Parse(). DateTime.Parse có quá tải chỉ mất 1 chuỗi và không có gì khác và nó sử dụng thông tin văn hóa hiện tại mà bạn không phải truyền nó. – Nick

+0

@Nick - Bạn nói đúng. Cảm ơn bạn! Tôi đã chỉnh sửa nó. – David

1

Quá tải của Convert.ToDateTime lấy chuỗi làm tham số đầu vào, được gọi nội bộ DateTime.Parse. Sau đây là việc thực hiện Convert.ToDateTime.

public static DateTime ToDateTime(string value) 
{ 
    if (value == null) 
    { 
     return new DateTime(0L); 
    } 
    return DateTime.Parse(value, CultureInfo.CurrentCulture); 
} 

Trong trường hợp quá tải khác, tham số được đưa vào giao diện IConvertible và sau đó phương thức ToDateTime tương ứng được gọi.

public static DateTime ToDateTime(ushort value) 
{ 
    return ((IConvertible) value).ToDateTime(null); 
} 
2

DateTime.Parse có quá tải mà chỉ có một String và không có gì khác mất và nó sử dụng hiện hành Locale thông tin mà không cần phải vượt qua nó trong

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