最近在项目中需要动态用到当日起最近一周的日期,小小的要求,用时才发现找不到现成的简便方法。
自己便动手写了一个简单的函数,在此记录,也给有需要的朋友参考。
代码如下:
CString date_one,date_two,date_three,date_four,date_five,date_six,date_seven;
//根据系统时间获取今后一周的日期
{
CTime t = CTime::GetCurrentTime(); //获取系统日期
int y=t.GetYear(); //获取年份
int m=t.GetMonth(); //获取月份
int d=t.GetDay(); //获得日
///
int date_num;
if (m==2)
{
date_num = 28 - d;
}
else if (m==4 || m == 6 || m==9 || m==11)
{
date_num = 30 - d;
}
else if (m==1 || m == 3 || m==5 || m==7 || m == 8 || m==10 || m==12)
{
date_num = 31 - d;
}
if (date_num > 0)
{
int i = 1;
for (i;i<=date_num;i++)
{
d++;
switch(i)
{
case 1:
date_two.Format("%d-%02d-%02d",y,m,d);
break;
case 2:
date_three.Format("%d-%02d-%02d",y,m,d);
break;
case 3:
date_four.Format("%d-%02d-%02d",y,m,d);
break;
case 4:
date_five.Format("%d-%02d-%02d",y,m,d);
break;
case 5:
date_six.Format("%d-%02d-%02d",y,m,d);
break;
case 6:
date_seven.Format("%d-%02d-%02d",y,m,d);
break;
default:
break;
}
}
if (date_num < 6)
{
if (m==12)
{
y++;
m=1;
}
else
{
m++;
}
d=0;
for (i;i<=6;i++)
{
d++;
switch(i)
{
case 1:
date_two.Format("%d-%02d-%02d",y,m,d);
break;
case 2:
date_three.Format("%d-%02d-%02d",y,m,d);
break;
case 3:
date_four.Format("%d-%02d-%02d",y,m,d);
break;
case 4:
date_five.Format("%d-%02d-%02d",y,m,d);
break;
case 5:
date_six.Format("%d-%02d-%02d",y,m,d);
break;
case 6:
date_seven.Format("%d-%02d-%02d",y,m,d);
break;
default:
break;
}
}
}
}
else
{
if (m==12)
{
y++;
m=1;
}
else
{
m++;
}
d=0;
for (int i=1;i<=6;i++)
{
d++;
switch(i)
{
case 1:
date_two.Format("%d-%02d-%02d",y,m,d);
break;
case 2:
date_three.Format("%d-%02d-%02d",y,m,d);
break;
case 3:
date_four.Format("%d-%02d-%02d",y,m,d);
break;
case 4:
date_five.Format("%d-%02d-%02d",y,m,d);
break;
case 5:
date_six.Format("%d-%02d-%02d",y,m,d);
break;
case 6:
date_seven.Format("%d-%02d-%02d",y,m,d);
break;
default:
break;
}
}
}
}