DWORD CKData::GetDateDay( int nIndex ) { DWORD date = GetDate(nIndex); if( CKData::ktypeMin5 == m_nKType || CKData::ktypeMin15 == m_nKType || CKData::ktypeMin30 == m_nKType || CKData::ktypeMin60 == m_nKType ) { CSPTime sptime; if( sptime.FromStockTimeMin( date ) ) return sptime.ToStockTimeDay(); else return 0; } return date; }
DWORD CSPTime::GetStockTimeNext( DWORD dwDate, int ktype, DWORD dwYear ) { CSPTime sptime; if( ktype == ktypeDay ) { if( !sptime.FromStockTimeDay( dwDate ) ) return -1; if( 6 == sptime.GetDayOfWeek() ) // Friday sptime += CSPTimeSpan(3,0,0,0); else sptime += CSPTimeSpan(1,0,0,0); return sptime.ToStockTimeDay(); } else if( ktype == ktypeWeek ) { if( !sptime.FromStockTimeDay( dwDate ) ) return -1; sptime += CSPTimeSpan(7,0,0,0); return sptime.ToStockTimeDay(); } else if( ktype == ktypeMonth ) { if( !sptime.FromStockTimeDay( dwDate ) ) return -1; int nYearNew = sptime.GetYear(); int nMonthNew = sptime.GetMonth(); nYearNew = ( nMonthNew >= 12 ? nYearNew+1 : nYearNew ); nMonthNew = ( nMonthNew >= 12 ? 1 : nMonthNew+1 ); CSPTime sptime2( nYearNew, nMonthNew, sptime.GetDay(), sptime.GetHour(),sptime.GetMinute(), sptime.GetSecond() ); if( 6 == sptime2.GetDayOfWeek() ) // Friday sptime2 += CSPTimeSpan(3,0,0,0); else sptime2 += CSPTimeSpan(1,0,0,0); return sptime2.ToStockTimeDay(); } else if( ktype == ktypeMin5 ) { if( !sptime.FromStockTimeMin( dwDate ) ) return -1; if( sptime.GetHour() == 11 && sptime.GetMinute() >= 25 ) sptime += CSPTimeSpan(0,1,35,0); else if( sptime.GetHour() == 14 && sptime.GetMinute() >= 55 ) sptime += CSPTimeSpan(0,18,35,0); else sptime += CSPTimeSpan(0,0,5,0); return sptime.ToStockTimeMin(); } else if( ktype == ktypeMin15 ) { if( !sptime.FromStockTimeMin( dwDate ) ) return -1; if( sptime.GetHour() == 11 && sptime.GetMinute() >= 15 ) sptime += CSPTimeSpan(0,1,45,0); else if( sptime.GetHour() == 14 && sptime.GetMinute() >= 45 ) sptime += CSPTimeSpan(0,18,45,0); else sptime += CSPTimeSpan(0,0,15,0); return sptime.ToStockTimeMin(); } else if( ktype == ktypeMin30 ) { if( !sptime.FromStockTimeMin( dwDate ) ) return -1; if( sptime.GetHour() == 11 && sptime.GetMinute() >= 0 ) sptime += CSPTimeSpan(0,2,0,0); else if( sptime.GetHour() == 14 && sptime.GetMinute() >= 30 ) sptime += CSPTimeSpan(0,19,0,0); else sptime += CSPTimeSpan(0,0,30,0); return sptime.ToStockTimeMin(); } else if( ktype == ktypeMin60 ) { if( !sptime.FromStockTimeMin( dwDate ) ) return -1; if( (sptime.GetHour() == 10 && sptime.GetMinute() >= 30) || sptime.GetHour() == 11 ) sptime += CSPTimeSpan(0,2,30,0); else if( sptime.GetHour() == 14 && sptime.GetMinute() >= 0 ) sptime += CSPTimeSpan(0,19,30,0); else sptime += CSPTimeSpan(0,1,0,0); return sptime.ToStockTimeMin(); } else { ASSERT( FALSE ); return -1; } }