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



  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值