time_t CSPTime::GetTimeTradeLatest( time_t tmTradeFirstToday ) { CSPTime tNow = CSPTime::GetCurrentTime(); CSPTime tTradeFirstToday( tmTradeFirstToday ); time_t tmTradeLatest = -1; int nYear = tTradeFirstToday.GetYear(); int nMonth = tTradeFirstToday.GetMonth(); int nDay = tTradeFirstToday.GetDay(); if( tNow > tTradeFirstToday && tNow.GetYear() == nYear && tNow.GetMonth() == nMonth && tNow.GetDay() == nDay ) { tmTradeLatest = tNow.GetTime(); if( (tNow.GetHour() == 11 && tNow.GetMinute() >= 30) || tNow.GetHour() == 12 ) tmTradeLatest = CSPTime(nYear,nMonth,nDay,11,30,0).GetTime(); else if( tNow.GetHour() >= 15 ) tmTradeLatest = CSPTime(nYear,nMonth,nDay,15,0,0).GetTime(); } else if( tNow > tTradeFirstToday ) tmTradeLatest = CSPTime(nYear,nMonth,nDay,15,0,0).GetTime(); return tmTradeLatest; }
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; } }