2012-07-03 38 views
8

Tôi đang sử dụng phương pháp Datetime.TryParse để kiểm tra ngày giờ hợp lệ. chuỗi ngày đầu vào sẽ là bất kỳ dữ liệu chuỗi nào. nhưng trả về false là ngày xác định không hợp lệ.kiểm tra ngày hợp lệ với phương pháp DateTime.TryParse

DateTime fromDateValue; 
if (DateTime.TryParse("15/07/2012", out fromDateValue)) 
{ 
    //do for valid date 
} 
else 
{ 
    //do for in-valid date 
} 

Chỉnh sửa: tôi đã bỏ qua. tôi cần phải kiểm tra ngày hợp lệ với thời gian là "15/07/2012 12:00:00".

Bất kỳ lời đề nghị được hoan nghênh ....

+4

Đây luôn là một điều nguy hiểm ... phân tích cú pháp phụ thuộc vào văn hóa của người dùng. Luôn luôn cố gắng ghi nhớ nó? "15/07/2012" có hiệu lực ở Pháp khi không ở Hoa Kỳ ... – Kek

+1

nếu bạn đang sử dụng ngôn ngữ dự kiến ​​định dạng MM/DD/YYYY, thì 15/07/2012 là ngày không hợp lệ. – Jason

+1

@ Mặc dù bạn nói đúng, ngôn ngữ của tôi là định dạng MM/dd/yyyy. và như vậy, nó không hợp lệ. – Sujit

Trả lời

21

Bạn có thể sử dụng phương pháp TryParseExact cho phép bạn vượt qua một tập hợp các định dạng có thể là bạn muốn hỗ trợ. Phương pháp TryParse phụ thuộc vào văn hóa nên rất cẩn thận nếu bạn quyết định sử dụng nó.

Vì vậy, ví dụ:

DateTime fromDateValue; 
string s = "15/07/2012"; 
var formats = new[] { "dd/MM/yyyy", "yyyy-MM-dd" }; 
if (DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out fromDateValue)) 
{ 
    // do for valid date 
} 
else 
{ 
    // do for invalid date 
} 
0

Bạn nên sử dụng TryParseExact như bạn dường như có định dạng cố định trong trường hợp của bạn.

Something như cũng có thể làm việc cho bạn

DateTime.ParseExact([yourdatehere], 
        new[] { "dd/MM/yyyy", "dd/M/yyyy" }, 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.None); 
0

Như những người khác nói, bạn có thể sử dụng TryParseExact.

Để biết thêm thông tin và sử dụng với thời gian, bạn có thể kiểm tra MSDN Documentation

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