1:返回在一定的时间段中某个星期数的时间集合
/// <summary>
/// 返回在一个范围中所选取的星期1-7的年月日的集合
/// </summary>
/// <param name="StartDate">开始日期</param>
/// <param name="EndDate">结束的日期</param>
/// <param name="week">需要提取的星期1-7数组:如(1,2)</param>
/// <returns>返回时间的集合</returns>
public List<string> getDateOfWeek(DateTime StartDate, DateTime EndDate, string[] week)
{
int weekFirst = Convert.ToInt32(StartDate.DayOfWeek);//开始日期第一天是星期几
int startMonth = StartDate.Month;
int startDay = StartDate.Day;
int startYear = StartDate.Year;
int maxMonthDays = DateTime.DaysInMonth(startYear, startMonth);
DateTime outputDate = DateTime.Parse(startYear + "-" + startMonth + "-" + startDay);
List<string> alldate = new List<string>();
for (int i = 0; i < week.Length; i++)
{
startMonth = StartDate.Month;
startDay = StartDate.Day;
startYear = StartDate.Year;
outputDate = StartDate;
if (weekFirst == int.Parse(week[i]))
{
outputDate = DateTime.Parse(startYear + "-" + startMonth + "-" + startDay);
alldate.Add(outputDate.ToString());
}
if (weekFirst < int.Parse(week[i]))
{
startDay = StartDate.Day + (int.Parse(week[i]) - weekFirst);
outputDate = DateTime.Parse(startYear + "-" + startMonth + "-" + startDay);
alldate.Add(outputDate.ToString());
}
if (weekFirst > int.Parse(week[i]))
{
startDay = StartDate.Day - (weekFirst - int.Parse(week[i]));
}
while (outputDate < EndDate)
{
maxMonthDays = DateTime.DaysInMonth(startYear, startMonth);
startDay = startDay + 7;
if (startDay > maxMonthDays)
{
startDay = startDay - maxMonthDays;
startMonth++;
}
if (startMonth > 12)
{
startMonth = 1;
startYear++;
}
outputDate = DateTime.Parse(startYear + "-" + startMonth + "-" + startDay);
if (outputDate < EndDate)
{
alldate.Add(outputDate.ToString());
}
}
}
return alldate;
}