怎样才能将VT_DATE类型转换成char*?
VARIANT vt   (这个vt中的数据是日期类型)
....
....
CString ch;????
????
AfxMessageBox(ch);//显示vt中的日期

解决方案 »

  1.   

    DATE dt = vt.date;
    COleDateTime odt = COleDateTime(dt);
    CString str;
    str = odt.Format("%Y-%m-%d %H:%M:%S");
    AfxMessageBox(str);
      

  2.   

    VT_DATE类型可以先转换成COleDateTime类型。
    然后,可以用COleDateTime类的格式化函数Format,将时间类型转换成字符串。
      

  3.   

    COleDateTime是MFC类库,我的ATL工程中是不支持MFC的怎么办?
      

  4.   

    where midnight, January 1, 1900 is 2.0, January 2, 1900 is 3.0, and so on. The value is passed in date. INT VariantTimeToDosDateTime( 
      double  vtime,                  
      unsigned short *  pwDosDate,  
      unsigned short *  pwDosTime  
    );简单一点的:
    INT VariantTimeToSystemTime( 
      double  vtime,              
      LPSYSTEMTIME  lpSystemTime  
    );
    typedef struct _SYSTEMTIME { 
        WORD wYear; 
        WORD wMonth; 
        WORD wDayOfWeek; 
        WORD wDay; 
        WORD wHour; 
        WORD wMinute; 
        WORD wSecond; 
        WORD wMilliseconds; 
    } SYSTEMTIME, *PSYSTEMTIME; 
      

  5.   

    VARIANT vt;
    SYSTEMTIME systime;
    VariantTimeToSystemTime(vt.date,&systime);
    CString str;
    str.Format("...",...);
      

  6.   

    VARIANT timeSelection;
    COleDateTime timeNow;
    DATE curDate;
    HRESULT hr;
    //Get current Time.
    timeNow = COleDateTime::GetCurrentTime();

    //Put time into variant.
    timeSelection.vt = VT_DATE;
    timeSelection.date = timeNow.m_dt;

    //Convert Variant into string using Variant Change Type.
    hr = VariantChangeType(&timeSelection, &timeSelection, 0, VT_BSTR);
    CString sCurTime(timeSelection.bstrVal);


    //Get Time as System Time.
    SYSTEMTIME mySysTime;
    timeNow.GetAsSystemTime(mySysTime);

    //Use COleDateTime functionality to get change SYSTEMTIME into DATE.
    COleDateTime pastTime(mySysTime);
    curDate = pastTime.m_dt;
    //Use COldeDateTime Format command to get date as CString.
    LPCTSTR format = _T("%X %z");  //Current time and time zone.
    //Note see "strftime" help for valid formating strings.
    CString sTime = pastTime.Format(format);