大家好!
    请问,在C++中怎样对日期进行加减后得到正确的日期?
    具体举例来说:
      今天是 2003-12-04.
      我要在这个基础上加上三个月,想最后得到2004-03-04.
      我用以下代码
      Date date1;  //获取当前的系统日期
      Date date2(date1.GetDay(),date1.GetMonth()+3,date1.GetYear());
      以为会得出以上正确结果,结果打印出来后成了: 2003-15-04(这样是不正确的)
    要如何解决。方法越简单越好!
       谢谢!

解决方案 »

  1.   

    可以用CTIME类CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15 PM March 19, 1999
    t += CTimeSpan( 0, 1, 0, 0 );      // 1 hour exactly
    ASSERT( t.GetHour() == 23 );如果是要自己写就从DAY开始判断过了一个月MONTH+1 ,MONTH>12 YEAR+1
      

  2.   

    我也不知道没有合适的函数
    CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15 PM March 19, 1999
    t += CTimeSpan( 36, 1, 0, 0 );      //36天
    这样天数是不会加错的,月数和年数可能要自己判断一下了
      

  3.   

    COleDateTime  ts1(Eyear, Emonth, Eday, Ehour, Eminute, Esecond);
    COleDateTime  ts2(Byear, Bmonth, Bday, Bhour, Bminute, Bsecond);
    COleDateTime  ts3 = ts1 - ts2;
     用这个
      

  4.   

    你看看COleDateTime它的msdn说明就知了
      

  5.   

    ts3.GetYear();
    ts3.GetMonth();
    ts3.GetDay();
    ts3.GetHour();
    ts3.GetMinute();
    ts3.GetSecond();
    +运算也是如此
      

  6.   

    carbon107(<软件开发思想.h>) 兄说得不错,不妨试试
      

  7.   


     问题是我用 GetDay()+90 (也就是设置为三个月以后),
     最后返回的值只是简单地把天数加上90,而年份却没变,即:
       今天是: 2003-12-04
       加90天后:2003-12-04+90 变成 2003-12-94 了,系统不把它转变成正确的日期。
      我想,既然是系统提拱的标准类库,它应该把它进行正确转换,没那么笨吧!