大家好!
请问,在C++中怎样对日期进行加减后得到正确的日期?
具体举例来说:
今天是 2003-12-04.
我要在这个基础上加上三个月,想最后得到2004-03-04.
我用以下代码
Date date1; //获取当前的系统日期
Date date2(date1.GetDay(),date1.GetMonth()+3,date1.GetYear());
以为会得出以上正确结果,结果打印出来后成了: 2003-15-04(这样是不正确的)
要如何解决。方法越简单越好!
谢谢!
解决方案 »
- listControl传值到TabControl问题
- DT930 程序开发相关问题
- 求vc小程序的视频,谢谢
- Windows注册表编程:怎样在资源管理器里删除、添加鼠标右键快捷菜单的“新建”子菜单项啊?
- select name from person where gruop = temp的问题
- 有关流媒体格式转换???
- OVERLAPPED.hEvent是否需要CreateEvent()?
- 100分求助一个界面
- 我只往文件里写了2个字节,为什么该文件却要占用4,096个字节呢?请帮忙回答好吗?
- visual c++6.0的程序如何迁移到VS studio?
- 急问:如何在16位中找到需要的256个数字
- 100分求《COM技术内幕》最后一章七巧板的源码
t += CTimeSpan( 0, 1, 0, 0 ); // 1 hour exactly
ASSERT( t.GetHour() == 23 );如果是要自己写就从DAY开始判断过了一个月MONTH+1 ,MONTH>12 YEAR+1
CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15 PM March 19, 1999
t += CTimeSpan( 36, 1, 0, 0 ); //36天
这样天数是不会加错的,月数和年数可能要自己判断一下了
COleDateTime ts2(Byear, Bmonth, Bday, Bhour, Bminute, Bsecond);
COleDateTime ts3 = ts1 - ts2;
用这个
ts3.GetMonth();
ts3.GetDay();
ts3.GetHour();
ts3.GetMinute();
ts3.GetSecond();
+运算也是如此
问题是我用 GetDay()+90 (也就是设置为三个月以后),
最后返回的值只是简单地把天数加上90,而年份却没变,即:
今天是: 2003-12-04
加90天后:2003-12-04+90 变成 2003-12-94 了,系统不把它转变成正确的日期。
我想,既然是系统提拱的标准类库,它应该把它进行正确转换,没那么笨吧!