求指定日期数年后日期C程序代码
求指定日期数年后(或数月后)日期C程序代码,如:2012-02-16 两年后的(24个月)日期 为2014-02-16,2012-02-29 两年后(24个月)的日期 为2014-02-28.
[解决办法]
楼主自己的思路呢?
[解决办法]
COleDateTime
COleDateTimeSpan
- C/C++ code
#include <afxdisp.h>#include <stdio.h>#include <stdlib.h>int main(int argc, TCHAR* argv[]) { COleDateTime t; COleDateTimeSpan ts; CString s,fmt; int nYear; int nMonth; int nDay; int nHour; int nMin; int nSec; int lDays; int nHours; int nMins; int nSecs; int i,N; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { printf("Fatal Error: MFC initialization failed\n"); return 1; } if (argc<13) { printf("Usage:%s sYYYY sMM sDD shh smm sss pDD phh pmm pss n {SQL|YYYY|YY}\n",argv[0]); return 2; } if (stricmp(argv[12],"SQL")==0) fmt="%Y-%m-%d %H:%M:%S"; else if (stricmp(argv[12],"YYYY")==0) fmt="%Y%m%d %H%M%S"; else if (stricmp(argv[12],"YY")==0) fmt="%y%m%d %H%M%S"; else { printf("Usage:%s sYYYY sMM sDD shh smm sss pDD phh pmm pss n {SQL|YYYY|YY}\n",argv[0]); return 3; } nYear =atoi(argv[ 1]); nMonth=atoi(argv[ 2]); nDay =atoi(argv[ 3]); nHour =atoi(argv[ 4]); nMin =atoi(argv[ 5]); nSec =atoi(argv[ 6]); lDays =atoi(argv[ 7]); nHours=atoi(argv[ 8]); nMins =atoi(argv[ 9]); nSecs =atoi(argv[10]); N =atoi(argv[11]); if (N<=0) { printf("Usage:%s sYYYY sMM sDD shh smm sss pDD phh pmm pss n {SQL|YYYY|YY}\n",argv[0]); return 4; } t=COleDateTime( nYear, nMonth, nDay, nHour, nMin, nSec); ts=COleDateTimeSpan( lDays, nHours, nMins, nSecs ); for (i=1;i<=N;i++) { s=t.Format(fmt); printf("%08d %s\n",i,s); t=t+ts; } return 0;}
[解决办法]
- C/C++ code
year += n; if (leap(year-n) && !leap(year-n)) { if (month == 2 && day == 29) { day--; } } printf("%d years after: %d-%d-%d", n, year, month, day);}