一个完整的日期减去一个天数,返回一个新日期,如何做? 为了方便说明问题,函数如下: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一减就行了 UpdateWindow api高手请进 新手问MFC线程问题 在windows下使用PVM中添加节点机出现如下问题 请教如何定期杀死一个进程 天啊,这些都是什么阿?编译Release时居然报了这么多错误:( 关于开机界面的问题 两个问题 关于SetWindowsHookEx(WH_KEYBOARD,GetMsgProc,NULL,GetCurrentThreadId()); 急!急!!急!!!小弟有一个C问题,请教各位大侠。 有关关闭视图的问题? 请问如何通过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一减就行了