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

          在做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类型转换的。



你可能感兴趣的:(mfc,CString,ctime,_variant_t类型)