//计算第N周的起始日期
COleDateTime GetWeekStartDate(int nYear,int nWeekNumber)
{
COleDateTime tt(nYear,1,1,0,0,0);
if( nWeekNumber > 1 )
{
int n = 7-tt.GetDayOfWeek();
COleDateTimeSpan s(n+1,0,0,0);
tt += s;
s.SetDateTimeSpan(7,0,0,0);
for(int k=2;k<nWeekNumber;k++)
tt += s;
}
return tt;
}
//计算第N周的结束日期
COleDateTime GetWeekEndDate(int nYear,int nWeekNumber)
{
COleDateTime tt(nYear,1,1,0,0,0);
int n = 7-tt.GetDayOfWeek();
COleDateTimeSpan s(n,0,0,0);
tt += s;
if( nWeekNumber > 1 )
{
s.SetDateTimeSpan(7,0,0,0);
for(int k=1;k<nWeekNumber;k++)
tt += s;
}
return tt;
}
有这两个日前,再判断是否在同一个月就简单了
COleDateTime GetWeekStartDate(int nYear,int nWeekNumber)
{
COleDateTime tt(nYear,1,1,0,0,0);
if( nWeekNumber > 1 )
{
int n = 7-tt.GetDayOfWeek();
COleDateTimeSpan s(n+1,0,0,0);
tt += s;
s.SetDateTimeSpan(7,0,0,0);
for(int k=2;k<nWeekNumber;k++)
tt += s;
}
return tt;
}
//计算第N周的结束日期
COleDateTime GetWeekEndDate(int nYear,int nWeekNumber)
{
COleDateTime tt(nYear,1,1,0,0,0);
int n = 7-tt.GetDayOfWeek();
COleDateTimeSpan s(n,0,0,0);
tt += s;
if( nWeekNumber > 1 )
{
s.SetDateTimeSpan(7,0,0,0);
for(int k=1;k<nWeekNumber;k++)
tt += s;
}
return tt;
}
有这两个日前,再判断是否在同一个月就简单了
void main()
{
COleDateTime tt1, tt2;
tt1 = GetWeekStartDate(2007, 8);
tt2 = GetWeekEndDate(2007, 9);
int date1 = tt1.GetMonth();
int date2 = tt2.GetMonth();
if(data1 == data2)
cout<<"The two week is in the same month!"<<endl;
else
cout<<"The two week is not in the same month!"<<endl;
}
FILETIME ft={0};//计算该年的第一天是星期几
st.wYear=2008;
st.wMonth=1;
st.wDay=1;SystemTimeToFileTime(&st, &ft);
FileTimeToSystemTime(&ft, &st);iDayOfWeek=st.wDayOfWeek; //** 任意给定两个周数
short weeks1,weeks2;//**计算每周的第一天距1月1日的天数short days1=7*weeks1-iDayOfWeek;
short days2=7*weeks2-iDayOfWeek;//** 计算距1月1日的时间偏移量
union
{
ft1;
ULONGLONG utime1;
};
union
{
ft2;
ULONGLONG utime2;
};ft1=ft;
ft2=ft;
utime1+=UInt32x32To64(days1*24*3600, 10000000); //秒数*10000000
utime2+=UInt32x32To64(days2*24*3600, 10000000);//** 将filetime转换成systemtime并比较月份是否相同
SYSTEMTIME st1, st2;
FileTimeToSystemTime(&ft1, &st1);
FileTimeToSystemTime(&ft2, &st2);if(st1.wYear==st2.wYear && st1.wMonth==st2.wMonth) //月份相同