在做MFC对数据库进行操作时,涉及到_variant_t类型和CString和CTime类型的转换,于是想整理了这几种转换方法。
_variant_t value;
CString str=(LPCTSTR)(_bstr_t)value;
2._variant_t类型转换为CTime类型
//个人方法:_variant_t类型先转换为CString类型再转换为CTime类型
_variant_t time;
CString Time=(LPCTSTR)(_bstr_t)time;
int Year,Month,Date;
sscanf(Time.GetBuffer(Time.GetLength()),"%d-%d-%d",&Year,&Month,&Date); //后面还可以取时分秒
CTime m_date(Year,Month,Date,0,0,0);
m_dtCtrl.SetTime(&m_date); //把得到的时间在时间器上显示
1.CString类型转换为_variant_t类型
CString str;
_variant_t value=(LPCTSTR)str;
2.CTime类型转换为_variant_t类型 //COleDateTime和CTime都可显示时间,但可表示的时间长度不同
//个人的方法是:把时间转换为CString再转换为_variant_
COleDateTime date; //CTime date;
m_dtCtrl.GetTime(date); //GetTime函数是得到MFC时间器的表示时间,不一定是准确时间; m_dtCtrl是时间 //器CDateTimeCtrl建的变量
CString Date=date.Format("%Y-%#m-%#d");
_variant_t vTime=(LPCTSTR)Date;
提醒:Format("%Y-%#m-%#d");是去零的格式,例如2014-9-6这种,
Format("%Y-%m-%d");如果要保留零,如2014-09-06的格式。
这俩种不同格式的时间是不相等的,所以在判断时间是否相等时,注意格式问题。
总结:上面在讲_variant_t类型和CTime类型转换时,我把CString类型当成中转站,所以也附带了CTime和CString类型的相互转化,其次是可以直接把_variant_t类型直接向CTime类型转换的。