111,126
社区成员
发帖
与我相关
我的任务
分享
static DataTable GetDates(DateTime dtStart, DateTime dtEnd)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("Monday", typeof(string)), new DataColumn("Tuesday", typeof(string)) });
DateTime time = dtStart;
while (time.DayOfWeek != DayOfWeek.Monday)
time = time.AddDays(1);
dt.Rows.Add(time.ToString("yyyy-MM-dd"), time.AddDays(1).ToString("yyyy-MM-dd"));
for (time = time.AddDays(7); time <= dtEnd; time = time.AddDays(7))
dt.Rows.Add(time.ToString("yyyy-MM-dd"), time.AddDays(1) > dtEnd ? "" : time.AddDays(1).ToString("yyyy-MM-dd"));
return dt;
}
static void Main(string[] args)
{
DataTable dt = GetDates(new DateTime(2009, 4, 1), new DateTime(2009, 4, 30));
foreach (DataRow dr in dt.Rows)
Console.WriteLine("Monday:{0},Tuesday:{1}", dr[0], dr[1]);
}
static DataTable GetDates(DateTime dtStart, DateTime dtEnd)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("Monday", typeof(string)), new DataColumn("Tuesday", typeof(string)) });
DateTime time = dtStart;
while (time.DayOfWeek != DayOfWeek.Monday)
time = time.AddDays(1);
dt.Rows.Add(time.ToString("yyyy-MM-dd"), time.AddDays(1).ToString("yyyy-MM-dd"));
for (; time <= dtEnd; time = time.AddDays(7))
dt.Rows.Add(time.ToString("yyyy-MM-dd"), time.AddDays(1) > dtEnd ? "" : time.AddDays(1).ToString("yyyy-MM-dd"));
return dt;
}
/*
输出:
Monday:2009-04-06,Tuesday:2009-04-07
Monday:2009-04-06,Tuesday:2009-04-07
Monday:2009-04-13,Tuesday:2009-04-14
Monday:2009-04-20,Tuesday:2009-04-21
Monday:2009-04-27,Tuesday:2009-04-28
*/
private DataTable ReturnWeekDay(DateTime startDate, DateTime endDate, DayOfWeek startWeekDay, int daySpan)
{
DataTable tableToReturn = new DataTable("DayTable");
for (int i = 0; i < daySpan; i++)
tableToReturn.Columns.Add(new DataColumn());
int iIndex = daySpan +1;
DataRow newRow = null;
for (DateTime currentDate = startDate; currentDate <= endDate; currentDate = currentDate.AddDays(1))
{
iIndex++;
if (currentDate.DayOfWeek == startWeekDay)
{
newRow= tableToReturn.Rows.Add (currentDate.ToString ("yyyy-MM-dd"));
iIndex = 0;
}
if (iIndex < daySpan && iIndex > 0)
newRow[iIndex] = currentDate.ToString("yyyy-MM-dd");
}
return tableToReturn;
}
DataTable dt = ReturnWeekDay(new DateTime(2009, 1, 1), new DateTime(2009, 2, 1), DayOfWeek.Monday, 2);