2009-10-07 67 views
10

Tôi có một ngày đó là trong một định dạng gọi là 'String (Generalized-Time)', xem MSDN linked here, tôi cần phải kiểm tra xem ngày này là ngày hôm nay và nếu nó là làm X.C# Làm cách nào để kiểm tra xem ngày hiện có là chuỗi ngày hôm nay?

Để làm phức tạp này một chút tôi có một int đó là trong ví dụ này 4, nếu int là 4 sau đó tôi muốn kiểm tra xem ngày đó là ở định dạng 'String (Generalized-Time)' là trong 4 ngày qua, int có thể 7, 24, 30 v.v.

Làm cách nào để viết thư này? Tôi là một người mới và rất biết ơn sự giúp đỡ.

Cảm ơn

Trả lời

32

Như thế này:

DateTime dt; 
    if (DateTime.TryParse(stringValue, out dt) && 
     dt.Date == DateTime.Today) 
    { 
     // do some stuff 
    } 

Để kiểm tra xem nó bất cứ lúc nào trong vòng bốn ngày qua,

DateTime dt; 
    if (DateTime.TryParse(stringValue, out dt) && 
     dt.Date > DateTime.Today.AddDays(-4f) && 
     dt < DateTime.Now) 
    { 
     // do some stuff 
    } 

hoặc, như là một phương pháp khuyến nông

public static bool WithinPreviousPeriod(this DateTime dt, int daysBack) 
{ 
    return dt.Date > DateTime.Today.AddDays(-daysBack)) 
      && dt < DateTime.Now; 
} 
+0

Awesome, làm thế nào tôi sẽ kiểm tra nếu nó là trong vòng 4 ngày qua không? Cảm ơn –

+0

Điều này sẽ giải quyết vấn đề trên bất kỳ máy tính nào ở bất kỳ địa phương nào, hoặc là phân tích cú pháp liên quan đến ngôn ngữ hệ thống của bạn? Tôi chỉ hỏi vì rất nhiều người gặp rắc rối với những ngày tháng. – spender

+0

DateTime.Parse không xử lý định dạng "Thời gian tổng quát". Đây là một giá trị ví dụ từ RFC: 199412161032Z. Bạn sẽ phải chuyển một chuỗi định dạng tùy chỉnh. – David

6
if(DateTime.Parse(yourString).Date == DateTime.Now.Date) 
{ 
    //do something 
} 

Nên xem ngày hôm nay có phải là ngày không. Tuy nhiên điều này là thiếu kiểm tra lỗi (nó giả định yourString là một chuỗi datetime hợp lệ).

Để làm việc kiểm tra phức tạp hơn bạn có thể làm:

DateTime date = DateTime.Parse(yourString); 
int dateOffset = 4; 

if(date.Date >= DateTime.Now.AddDays(-dateOffset).Date) 
{ 
//this date is within the range! 
} 
+0

Cảm ơn Alan, tôi sẽ thử điều này ngay. –

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