2016-01-22 30 views
1

對於最佳方法,我有點遺憾。比方說,我有以下幾點:檢查一個範圍內的任何日期是否落在指定的月份

//Get the first and last day of the month -- ex February 
int month = DateTime.ParseExact("February", "MMMM", new CultureInfo("en-US")).Month; 
var now = DateTime.Now; 

var firstOfMonth = new DateTime(now.Year, month, 1); 
var lastOfMonth = new DateTime(now.Year, month, DateTime.DaysInMonth(now.Year, month)); 

var coverageStartDate = new DateTime(now.Year, 1, 1); 
var coverageEndDate = new DateTime(now.Year, 2, 15); 

我想創建一個檢查,看看是否coverageStartDate和coverageEndDate的日期範圍落在二月份。請記住,這些值也可能是這樣的:

var coverageStartDate = new DateTime(now.Year, 2, 3); 
var coverageEndDate = new DateTime(now.Year, 2, 10); 

只要存在覆蓋範圍的開始/結束日期範圍內的單個日期在二月份,我會想返回true。

回答

2

隨着DateTime您可以使用> =,< =等

採用你的代碼,我會做這樣的事情:

var firstOfMonth = new DateTime(now.Year, month, 1, 0, 0, 0); 
var lastOfMonth = new DateTime(now.Year, month, DateTime.DaysInMonth(now.Year, month), 23, 59, 59); 

var coverageStartDate = new DateTime(now.Year, 1, 1); 
var coverageEndDate = new DateTime(now.Year, 2, 15); 

if(coverageStartDate <= lastOfMonth && coverageEndDate >= firstOfMonth) 
{ 
    // Do something 
} 

該代碼並不需要幾年必須是相同,所以覆蓋時間可以跨越多年。

相關問題