有这样直接判断的函数吗?或者有能把日期转换为星期的函数吗?
谢谢
谢谢
解决方案 »
- 怎么用命令删除指定的程序,比如QQ,不是要打开添加删除面板,而是直接删除?
- COM接口IWbemLocator是不是对应的都是DCOM服务?
- 求助 之前有一个常用图标的帖子 谁知道在哪里
- 求教MFC高手:怎么利用树型控件获取某路径下的文件
- 求救:用VC编openGL程序如何在窗口上添加菜单按钮?
- 能否让声卡发出指定频率声音
- 为什么会有时接不全呢?代码如下:接收线程
- 有没有用www.21cn.com邮箱的,为什么我用FoxMail4.0不能连接到我的21cn邮箱,而其他网站的邮箱可以?
- 超酷话题:如何在windows下获取所有链路层数据,实现数据过滤?
- 大家都用什么工具作help啊?
- faint,这样获得一个doc不行么?为什么会出错?
- 问一个行外问题:用什么工具可以将rm格式转化成mp3格式? 急用!谢谢!!
比如周六和下周一,相差只有两天,小于7,但不在同一个星期里
两天相差小于7,且日期靠后的星期数大
faint!
他说的是“在同一个星期里”
看不懂吗
这么简单的问题还有人......
faint
#include <iostream>
#include <string>
using namespace std;
int dayOfWeek(int year,int month,int day);
int main()
{ int Y,M,D;
cout<<"Input year month and day:"<<endl;
cin>>Y>>M>>D;
const string week[7]=
{string("Sunday"),string("Monday"),string("Tuesday"),
string("Wednesday"),string("Thursday"),string("Friday"),
string("Saturday")};
cout<<"The date is "<<week[dayOfWeek(Y,M,D)];
}
int dayOfWeek(int year,int month,int day)
{ static int _month[12]={31,0,31,30,31,30,31,31,
30,31,30,31};
if(year%4==0 && year%100!=0 || year%400==0)
_month[1]=29;
else _month[1]=28;
int C=0;
for(int i=0;i<month-1;++i)
C+=_month[i];
C+=day;
int S=year-1+(year-1)/4-(year-1)/100+(year-1)/400+C;
return S%7;
}
用的是CTime, CTimeSpan,就是用其中一个日期算出周日和周六的值,看另一个日期是否在其中即可。BOOL isSameWeek(char *date1, char *date2)
{
if ( strlen( date1) != 8 || strlen( date2) != 8 )
return false; char szTemp[9];
int iYear1, iMon1, iDay1;
int iYear2, iMon2, iDay2; memset( szTemp, 0, sizeof(szTemp) );
strncpy( szTemp, date1, 4 );
iYear1 = atoi( szTemp ); memset( szTemp, 0, sizeof(szTemp) );
strncpy( szTemp, date1+4, 2 );
iMon1 = atoi( szTemp ); memset( szTemp, 0, sizeof(szTemp) );
strncpy( szTemp, date1+6, 2 );
iDay1 = atoi( szTemp ); memset( szTemp, 0, sizeof(szTemp) );
strncpy( szTemp, date2, 4 );
iYear2 = atoi( szTemp ); memset( szTemp, 0, sizeof(szTemp) );
strncpy( szTemp, date2+4, 2 );
iMon2 = atoi( szTemp ); memset( szTemp, 0, sizeof(szTemp) );
strncpy( szTemp, date2+6, 2 );
iDay2 = atoi( szTemp ); CTime ct1( iYear1, iMon1, iDay1, 0, 0, 0 ); int iWeekDay = ct1.GetDayOfWeek(); CTimeSpan ts1( 1-iWeekDay, 0 , 0, 0 );
CTimeSpan ts2( 7-iWeekDay, 0, 0, 0 ); CTime tSunday = ct1 + ts1;
CTime tSaturday = ct1 + ts2; CTime ct2( iYear2, iMon2, iDay2, 0, 0, 0 ); if ( ct2 >= tSunday && ct2 <=tSaturday )
return true; return false;
}
COleDateTime::GetDayOfWeek
int GetDayOfWeek( ) const;Return Value
The day of the week represented by the value of this COleDateTime object.Res
Call this member function to get the day of the month represented by this date/time value.Valid return values range between 1 and 7, where 1=Sunday, 2=Monday, and so on. If the status of this COleDateTime object is not valid, the return value is AFX_OLE_DATETIME_ERROR.For information on other member functions that query the value of this COleDateTime object, see the following member functions: GetDay
GetMonth
GetYear
GetHour
GetMinute
GetSecond
GetDayOfYear
ExampleCOleDateTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
ASSERT(t.GetDayOfWeek() == 6); // it's a Friday
s=y-1+[(y-1)/4]-[(y-1)/100]+[(y-1)/400]+c
其中y为年份,c为所求天距离元旦的天数,[]为取整,
把得到的s除以7,余数就是星期几。
(公式应该没错吧)。