getKIndex static method

dynamic getKIndex(
  1. dynamic kDataL,
  2. dynamic time,
  3. dynamic kData,
  4. dynamic interval,
)

Implementation

static getKIndex(kDataL,time,kData,interval){
  int i = 0;
  for(i = 0;i<kDataL;i++){
    if(kData[i]['time'] == time){
      return i;
    }
  }
  var firstT = kData[0]['time'];
  var lastT = kData[kDataL-1]['time'];
  int chaT = 0;
  int it = 0;
  if(time<firstT){
    it = firstT;
    chaT = time-firstT;
  }else{
    chaT = time-lastT;
    it = lastT;
  }
  // print('存储的k线 时间差: ${chaT}  基础时间 ${it}  最后时间:${lastT}');
  dynamic gapNum = 0;
  if (interval == 'fs') {
    interval = 1.toString(); //单位秒
  }
  if (Tools.isNumber(interval)) {
    interval = num.parse(interval) * 1000; //转换成毫秒值
    // print('存储的k线 ceil前: ${chaT/interval}  ');
    gapNum = (chaT/interval).ceil();
    // print('存储的k线 ceil后: ${gapNum}  ');
  } else {
    DateTime dateA = DateTime.fromMillisecondsSinceEpoch(it);
    if (interval == intervalType['1day']) {
      gapNum = calculateDaysDifference(dateA,chaT);
      gapNum = (gapNum/1).ceil();
    } else if (interval == intervalType['3day']) {
      gapNum = calculateDaysDifference(dateA,chaT);
      gapNum = (gapNum/3).ceil();
    } else if (interval == intervalType['1week']) {
      gapNum = calculateDaysDifference(dateA,chaT);
      gapNum = (gapNum/7).ceil();
    } else if (interval == intervalType['3week']) {
      gapNum = calculateDaysDifference(dateA,chaT);
      gapNum = (gapNum/21).ceil();
    } else if (interval == intervalType['1mouth']) {
      gapNum = calculateMonthDifference(dateA,chaT);
      gapNum = (gapNum/1).ceil();
    } else if (interval == intervalType['2mouth']) {
      gapNum = calculateMonthDifference(dateA,chaT);
      gapNum = (gapNum/2).ceil();
    } else if (interval == intervalType['3mouth']) {
      gapNum = calculateMonthDifference(dateA,chaT);
      gapNum = (gapNum/3).ceil();
    } else if (interval == intervalType['1year']) {
      gapNum = calculateYearDifference(dateA,chaT);
      gapNum = (gapNum/1).ceil();
    }
  }
  if(chaT>=0){
    // print('存储的k线 索引: ${kDataL-1+gapNum}   kdatal ${kDataL} ');
    return kDataL-1+gapNum;
  }else{
    // print('存储的k线 索引: ${kDataL-1+gapNum}   kdatal ${kDataL} ');
    return gapNum;
  }
}