数据库中时间存放的是COleDateTime型的时间,其值是dobule型的浮点数,而我们需要将其显示成字符型的年-月-日-时-分-秒的形式,因此需要转换。以下是我的转换代码,基于sqlite3数据库。
COleDateTime vtime;
DOUBLE sql_time=sqlite3_column_double(stat,i);
vtime=sql_time;
CString str_tempTime=vtime.Format(_T("%Y-%m-%d %H:%M:%S"));//这句是最重要的啊哈
MessageBox(str_tempTime);
下边是从网上搜集的些关于CTime, COleDateTime,CString数据类型之间的转换。
//
// 1.CString类型的时间串,转换到COleDateTime
//
// CString str ="2003-10-27 6:24:37"; //CString--->COleDateTime
// CString str ="2003-10-27 08:09:10"; //CString--->COleDateTime
// CString str ="2003-10-27"; //CString--->COleDateTime
// CString str ="2003/10/27"; //CString--->COleDateTime
CString str ="03/10/27"; //CString--->COleDateTime
COleVariant vtime(str);
vtime.ChangeType(VT_DATE);
COleDateTime time4=vtime;
//
// 2.从COleDateTime类型转换到 CTime
//
SYSTEMTIME systime;
VariantTimeToSystemTime(time4, &systime);
CTime ctm(systime);
//
// 3.CTime可以直接加上一个绝对秒数
//
ctm + =3601;//一小时零一秒
//
// 4.打印出来
//
CString ss;
ss = ctm.Format("%Y-%m-%d %H:%M:%S");
AfxMessageBox(ss);
报Debug Accertion Failed错误,看msdn其中有这个函数的说明,但release版本没问题。