求一个现成的能处理日期和时间的函数或者class
要求有一个基准时间,如1900.1.1 0:00:00
输入任意浮点数,如2000.1213,则要输出2000.1213天之后的日期时间,即1905.06.22 02:54:40
同时支持反向的功能,即给出日期输出浮点数
日期的输出要用一个string show(string a)函数,其中a为分隔符,如a=" / ",则要输出1905 / 06 / 22 02:54:40
同时需要以XXXX.XX.XX XX:XX:XX为标准格式的operater =进行赋值
[解决办法]
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;}