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;
}