Nếu bạn biết định dạng ngày/giờ chính xác (tức là nó không bao giờ thay đổi và không phụ thuộc vào văn hóa hoặc ngôn ngữ của người dùng), thì bạn có thể sử dụng DateTime.TryParseExact
.
Ví dụ:
chuỗi
DateTime result;
if (DateTime.TryParseExact(
str, // The string you want to parse
"dd-MM-yyyy", // The format of the string you want to parse.
CultureInfo.InvariantCulture, // The culture that was used
// to create the date/time notation
DateTimeStyles.None, // Extra flags that control what assumptions
// the parser can make, and where whitespace
// may occur that is ignored.
out result)) // Where the parsed result is stored.
{
// Only when the method returns true did the parsing succeed.
// Therefore it is in an if-statement and at this point
// 'result' contains a valid DateTime.
}
Định dạng có thể là một quy định hoàn toàn custom date/time format (như dd-MM-yyyy
), hoặc một general format specifier (như g
). Đối với sau này, văn hóa quan trọng như thế nào ngày được định dạng. Ví dụ: tại các ngày ở Hà Lan được viết là 26-07-2012
(dd-MM-yyyy
) trong khi ngày ở Hoa Kỳ được viết là 7/26/2012
(M/d/yyyy
).
Tuy nhiên, tất cả điều này chỉ hoạt động khi chuỗi str
của bạn chỉ chứa ngày bạn muốn phân tích cú pháp. Nếu bạn có một chuỗi lớn hơn với tất cả các loại ký tự không mong muốn xung quanh ngày, sau đó bạn sẽ phải tìm ngày trong đó đầu tiên. Điều này có thể được thực hiện bằng cách sử dụng một biểu thức chính quy, đó là một chủ đề hoàn toàn khác trong chính nó. Một số thông tin chung về biểu thức chính quy (regex) trong C# có thể được tìm thấy here. Tham chiếu biểu thức chính quy là here. Ví dụ: một ngày tương tự như d/M/yyyy
có thể được tìm thấy bằng cách sử dụng regex \d{1,2}\/\d{1,2}\/\d{4}
.
Có thể trùng lặp của http://stackoverflow.com/questions/11660423/string-comparison-on-date-format-wont-work – MikeKulls
tài liệu tham khảo hữu ích cho những người sử dụng cú pháp truy vấn LINQ thay vì http://stackoverflow.com/questions/9003697/how-to-i-use-tryparse-in-a-linq-query-of-xml-data –