2009-10-08 24 views
6

Tôi đang cố phân tích DateTime, với định dạng chính xác được chấp nhận từ đầu vào của máy khách.DateTimeFormatInfo.InvariantInfo vs CultureInfo.InvariantCulture

Cái nào là tốt hơn

bool success = DateTime.TryParseExact(value, "dd-MMM-yyyy", 
    DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dateTime); 

HOẶC

bool success = DateTime.TryParseExact(value, "dd-MMM-yyyy", 
    CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime); 

Tất nhiên, mã này là bên trong một phương pháp tĩnh phổ biến mà được gọi là bất cứ nơi nào phân tích của ngày là bắt buộc.

Trả lời

7

Nếu bạn nhìn vào chữ ký cho DateTime.TryParseExact, phải mất IFormatProvider làm đối số thứ ba. Cả hai DateTimeFormatInfo.InvariantInfoCultureInfo.InvariantCulture triển khai giao diện này, vì vậy, bạn đang thực sự gọi cùng một phương thức trên DateTime trong cả hai trường hợp.

Nội bộ, nếu bạn sử dụng CultureInfo.InvariantCulture, thuộc tính DateTimeFormat của nó được gọi để có được ví dụ DateTimeFormatInfo. Nếu bạn sử dụng DateTimeFormatInfo.InvariantInfo, điều này được sử dụng trực tiếp. Cuộc gọi DateTimeFormatInfo sẽ là hơi nhanh hơn vì nó phải thực hiện ít hướng dẫn hơn, nhưng điều này sẽ rất gần như không tạo nên sự khác biệt trong (gần như) tất cả các trường hợp.

Sự khác biệt chính giữa hai cách tiếp cận là cú pháp. Sử dụng cái nào bạn tìm thấy rõ ràng nhất.

3

Họ sẽ đưa ra kết quả tương tự.
Và rất có khả năng sẽ không có sự khác biệt về hiệu suất.

Vì vậy, hãy sử dụng những gì bạn cho là dễ đọc nhất. Sự lựa chọn của tôi sẽ là DateTimeFormatInfo.InvariantInfo vì có nhiều điểm hơn một chút.

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