您的位置:首页 > 其它

_variant_t类型和CString类型、CTime类型的相互转换

2014-09-06 13:47 387 查看
在做MFC对数据库进行操作时,涉及到_variant_t类型和CString和CTime类型的转换,于是想整理了这几种转换方法。

一:_variant_t类型转换成CString和CTime类型

1._variant_t类型转换为CString类型
_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); //把得到的时间在时间器上显示

二:CString类型和CTime类型转换成_variant_t类型

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类型转换的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: