public ContractTime GetContractTime(DateTime date, int index = 0)
        {
            ContractTime cContractTime = null;

            date = new DateTime(date.Year, date.Month, date.Day, __iCloseHour, __iCloseMinute, __iCloseSecond);
            int iCount = __cContractTimes.Count;

            for (int i = index; i < iCount; i++)
            {
                ContractTime cContractTemp = __cContractTimes[i];
                double       dTotals       = (cContractTemp.MaturityDate - date).TotalSeconds;
                if (dTotals >= 0 && dTotals <= 604800)
                {
                    cContractTime = cContractTemp;
                    break;
                }
            }

            if (cContractTime == null)
            {
                if (index > 0)
                {
                    date = date.AddSeconds(index * 604800);
                }
                cContractTime = MaturityDateUtil.GetWeekMaturityDate(date);
            }
            return(cContractTime);
        }
        private void CalcContractTime(DateTime today)
        {
            //先計算出目前此週到期日
            ContractTime cCurrentContractTime = MaturityDateUtil.GetWeekMaturityDate(today);

            AddContractTime(0, cCurrentContractTime);

            DateTime cDate = cCurrentContractTime.MaturityDate.AddSeconds(604800);

            for (int i = 1; i < 3; i++)
            {
                ContractTime cContractTime = MaturityDateUtil.GetWeekMaturityDate(cDate);
                AddContractTime(i, cContractTime);

                cDate = cContractTime.MaturityDate.AddSeconds(604800);
            }
        }