以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  请教 date类型怎样能转换成time_t类型呢?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=29546)

--  作者:zjfuwen
--  发布时间:2012/9/27 23:47:39
--  请教 date类型怎样能转换成time_t类型呢?

就是

//读取上海市场的600000日线数据范例
 PCALCINFO stData = {0};
 stData.m_dataType = MIN5_DATA;//日线
 stData.m_bIsPow = 1; //是否复权
 stData.m_wMarket = \'JZ\';

之中的stData.m_pMainData[i].m_timeDate,m_timeDate原先定义应该是date格式,要转成time_t格式


--  作者:王锋
--  发布时间:2012/9/28 0:01:01
--  

给你一个我们的自用转换函数

 

CTime COleDataTimeToCTime(COleDateTime& time)
{
 CTime time2(time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond());
 return time2;
}

 

使用范例:

 

time_t timeDate = COleDataTimeToCTime(stData.m_pMainData[i].m_timeDate).GetTime();


--  作者:zjfuwen
--  发布时间:2012/9/28 16:54:54
--  

多谢,试试看看


--  作者:zjfuwen
--  发布时间:2012/9/28 18:14:19
--  

出错啊

Compiling...
MainWindowDlg.cpp
E:\\AddinDemo\\MainWindowDlg.cpp(256) : error C2664: \'COleDataTimeToCTime\' : cannot convert parameter 1 from \'double\' to \'class COleDateTime &\'
        A reference that is not to \'const\' cannot be bound to a non-lvalue
E:\\AddinDemo\\MainWindowDlg.cpp(256) : error C2228: left of \'.GetTime\' must have class/struct/union type
执行 cl.exe 时出错.


--  作者:zjfuwen
--  发布时间:2012/9/28 18:15:18
--  

是不是函数的位置没放对,应该放在哪里呢

 


--  作者:zjfuwen
--  发布时间:2012/9/28 18:16:08
--  


CTime COleDataTimeToCTime(COleDateTime& time)
{
 CTime time2(time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond());
 return time2;
}

 

void CMainWindowDlg::OnButton1Gedata()
{
 //读取上海市场的600000日线数据范例
 PCALCINFO stData = {0};
 stData.m_dataType = MIN5_DATA;//日线
 stData.m_bIsPow = 1; //是否复权
 stData.m_wMarket = \'JZ\';
 strcpy(stData.m_szLabel,"IF00"); //读取600000 浦发银行数据
 
 
 if(g_pMainFormework->GetDataInfo(&stData))
 {
  MTHSTHEAD hsthead;
    CFile file;
    file.Open( _T("D:\\\\Weisoft Stock\\\\mthsthead.hst"), CFile::modeRead );
    file.SeekToBegin();
       file.Read( &hsthead, sizeof(MTHSTHEAD) );
 CFile tempFile(_T("D:\\\\MetaTrader NordFX\\\\history\\\\NordGroupInv-Real1\\\\IF00.hst"),CFile::modeCreate|CFile::modeWrite);
 tempFile.SeekToBegin();
    CArchive ar(&tempFile,CArchive::store);
    ar.Write(&hsthead,sizeof(hsthead));
    ar.Close();
    tempFile.Close();
     MTHST kline;
        CString strText;
  CString strText2;
  CString str3;
  time_t d_time;
  float d_open,d_high,d_low,d_close,d_vol;
  int size;
  size=stData.m_nNumData;
  for(int i = 0; i < 5; i++)
  {
         time_t d_time = COleDataTimeToCTime(stData.m_pMainData[i].m_timeDate).GetTime();
   d_open=stData.m_pMainData[i].m_fOpen;
   d_high=stData.m_pMainData[i].m_fHigh;
   d_low=stData.m_pMainData[i].m_fLow;
   d_close=stData.m_pMainData[i].m_fClose;
   d_vol=stData.m_pMainData[i].m_fVolume;
  
           CTime   tm   =   d_time;
           str3.Format("%d-%d-%d %d:%d:%d",tm.GetYear(),tm.GetMonth(),tm.GetDay(),tm.GetHour(),tm.GetMinute(),tm.GetSecond());
      strText.Format("数据:%s %.1f %.1f %.1f %.1f %.0f",str3,d_open,d_high,d_low,d_close,d_vol);
   AfxMessageBox(strText);
   //....


--  作者:王锋
--  发布时间:2012/9/28 21:42:12
--  

COleDateTime timeTemp = stData.m_pMainData[i].m_timeDate;

time_t timeDate = COleDataTimeToCTime(timeTemp ).GetTime();

 

这样转化一下