有这样直接判断的函数吗?或者有能把日期转换为星期的函数吗?
谢谢

解决方案 »

  1.   

    有的,GetDayOfWeek,是COleDateTime的函数,具体看看MSDN的解释
      

  2.   

    很简单呀,你可以把这两个日子的日期记下来,然后把它们相减,如果小与7,那么就在一个星期内,反之就不在!判断两个时间差的函数是difftime()
      

  3.   

    按speakboy那样算肯定有问题的
    比如周六和下周一,相差只有两天,小于7,但不在同一个星期里
      

  4.   

    SO easy!!!!!!!!!!!!!!!!!!!!!!!!
    两天相差小于7,且日期靠后的星期数大
    faint!
      

  5.   

    faint
    他说的是“在同一个星期里”
    看不懂吗
      

  6.   

    我说的星期数是指0、1、2、3、4、5、6
    这么简单的问题还有人......
    faint
      

  7.   

    //一个根据年月日判断星期几的函数。不过没有对输入数据的合法性判断。
    #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;
    }
      

  8.   

    说对了,以某一天(你已知道星期几)为基准,最好是个星期天(0),判断两个新日期和它的差 % 7是几,就得星期数啦。 再按csdnexplorer(csdnexplorer)的方法判断。
      

  9.   

    关于VC里的实现,我给你做了个函数,已经测试过了。
    用的是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;
    }
      

  10.   

    谁说的没有GetDayOfWeek这个函数的,看看msdn的
    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
      

  11.   

    jtls() 你没有调查清楚不要乱说
      

  12.   

    有人告诉我有个公式可以直接算的:
    s=y-1+[(y-1)/4]-[(y-1)/100]+[(y-1)/400]+c
    其中y为年份,c为所求天距离元旦的天数,[]为取整,
    把得到的s除以7,余数就是星期几。
    (公式应该没错吧)。