我會給你開始日期和結束日期及星期的第一天像週一開始日期和結束日期及星期的第一天像週一
Public void check(string StartDate, string EndDate, String Monday
{
// Logic here
}
如何找到多少週一從開始日期到結束日期和日期。
我會給你開始日期和結束日期及星期的第一天像週一開始日期和結束日期及星期的第一天像週一
Public void check(string StartDate, string EndDate, String Monday
{
// Logic here
}
如何找到多少週一從開始日期到結束日期和日期。
爲了實現自己的目標,你應該通過起始日期,結束日期和星期幾(prefferably不是字符串,但作爲一個更好的代碼可讀性一個星期幾):
public List<DateTime> GetListOfDays(DateTime startDate, DateTime endDate, DayOfWeek dayOfWeek)
{
var list = new List<DateTime>();
var daysDifference = endDate.Subtract(startDate).TotalDays;
for (int i = 0; i < daysDifference; i++)
{
var date = startDate.AddDays(i);
if (date.DayOfWeek == dayOfWeek)
{
list.Add(date);
}
}
return list;
}
返回列表將包含所有星期一(如果您通過Monday
作爲dayOfWeek
)與他們的確切日期。如果你在返回的列表上執行.Count()
,你可以看到它們中有多少被返回。
public void CountMondays(DateTime start, DateTime end){
int mondays = 0;
for(DateTime date = start;date <= end; date=date.AddDays(1)){
if(date.DateOfWeek == DayOfWeek.Monday)
mondays++;
}
return mondays;
}
這將工作,並不需要循環。速度的差異並不大。大約100年來的5毫秒,然而,2000年間,它的周圍60-70ms(使用列表排序以上),其中非環狀始終爲0
public static int GetAmountBetween(DateTime startDate, DateTime endDate, DayOfWeek dayOfWeek)
{
int addAmount = 0;
switch (dayOfWeek)
{
case DayOfWeek.Monday:
addAmount = 0;
break;
case DayOfWeek.Tuesday:
addAmount = 1;
break;
case DayOfWeek.Wednesday:
addAmount = 2;
break;
case DayOfWeek.Thursday:
addAmount = 3;
break;
case DayOfWeek.Friday:
addAmount = 4;
break;
case DayOfWeek.Saturday:
addAmount = 5;
break;
case DayOfWeek.Sunday:
addAmount = 6;
break;
}
return (endDate.Subtract(startDate).Days + addAmount)/7;
}
@NayeemMansoori我張貼這不工作的代碼循環。無論哪種方式都很好。 –