一个完整的日期减去一个天数,返回一个新日期,如何做? 为了方便说明问题,函数如下:CString GetNewTime(CString sOldTime, int iDays){ ...}即GetNewTime( "2003-12-17", 30 ) = "2003-11-17" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 几天前看到的http://expert.csdn.net/Expert/topic/2561/2561297.xml?temp=.1914026 COleDateTime odt1(2003, 12, 14);COleDateTime odt2 = odt1 + COleDateTimeSpan(2); CString str = "2003-12-17";CString strYear, strMonth, strDay;strYear = str.Left(4);strMonth = str.Mid(5, 2);strDay = str.Right(2);COleDateTime odt(atoi(strYear), atoi(strMonth), atoi(strDay), 0, 0, 0);COleDateTimeSpan odts(16, 0, 0, 0);COleDateTime o = odt- odts;str = o.Format(_T("%Y-%m-%d"));return str; 用COleDateTime和COleDateTimespan就可以搞定你看看msdn楼上也说的差不多了顶!! 其实这个问题有一个比较好的方法,1 你用GetLocalTime得到一个SYSTIME2, 然后SystemTimeToFileTime,得到一个FileTime3 然后进行一个64位数的减法,得到新的FileTime,4 然后用 FileTimeToSystemTime 得到新的SYSTIME3中要注意FileTIme是一个64位的数,而他的单位是100-nanosecond所以要减那么就是(x天=24*60*60*10^7*x)当然处理64位的数不是那么方便,那么就可以只用FILETIME高32位因为10^7*60*60*24 / 2^32=201.165676所以,过去一天那么FILETIME高32位会加201 ,那么你只需要处理高32位就可以了。 上面的东西都是标准API,,大家明白吗? strCString="2003-10-27 6:24:37"; //CString--->COleDateTime COleVariant vtime(strCString); vtime.ChangeType(VT_DATE); COleDateTime time4=vtime;然后使用COleDateTimeSpan一减就行了 [我的2010]忙碌,兴奋,寂寞,激动,害怕,悲伤,彷徨,迷茫,平静 VC数据库全局变量问题 怎么去掉WebBowser 控件的滚动条? 能够connect并且send成功 但为什么不能recv? 组合框上回车对话框消失,为什么??? 请各位高手救助小妹:关于CTreeCtrl的问题 请问这是什么意思? 现在的windows版本在安装过程中都没有屏幕闪烁的问题。为什么以前的windows有这个问题 紧急求助:如何调用父对话框的函数 VC 6.0中MFC程序调用AfxBeginThread函数出错,请高手指教,谢谢! 请问如何通过ADO建立数据库连接? 动态显示文本问题!
http://expert.csdn.net/Expert/topic/2561/2561297.xml?temp=.1914026
COleDateTime odt2 = odt1 + COleDateTimeSpan(2);
CString strYear, strMonth, strDay;
strYear = str.Left(4);
strMonth = str.Mid(5, 2);
strDay = str.Right(2);COleDateTime odt(atoi(strYear), atoi(strMonth), atoi(strDay), 0, 0, 0);
COleDateTimeSpan odts(16, 0, 0, 0);
COleDateTime o = odt- odts;
str = o.Format(_T("%Y-%m-%d"));
return str;
你看看msdn
楼上也说的差不多了
顶
!!
1 你用GetLocalTime得到一个SYSTIME
2, 然后SystemTimeToFileTime,得到一个FileTime
3 然后进行一个64位数的减法,得到新的FileTime,
4 然后用 FileTimeToSystemTime 得到新的SYSTIME
3中要注意FileTIme是一个64位的数,而他的单位是100-nanosecond
所以要减那么就是(x天=24*60*60*10^7*x)当然处理64位的数不是那么方便,那么就可以只用FILETIME高32位
因为10^7*60*60*24 / 2^32=201.165676
所以,过去一天那么FILETIME高32位会加201 ,那么
你只需要处理高32位就可以了。 上面的东西都是标准API,,
大家明白吗?
COleVariant vtime(strCString);
vtime.ChangeType(VT_DATE);
COleDateTime time4=vtime;
然后使用COleDateTimeSpan一减就行了