gpt4 book ai didi

org.apache.poi.ss.formula.atp.YearFracCalculator类的使用及代码示例

转载 作者:知者 更新时间:2024-03-14 08:31:31 26 4
gpt4 key购买 nike

本文整理了Java中org.apache.poi.ss.formula.atp.YearFracCalculator类的一些代码示例,展示了YearFracCalculator类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。YearFracCalculator类的具体详情如下:
包路径:org.apache.poi.ss.formula.atp.YearFracCalculator
类名称:YearFracCalculator

YearFracCalculator介绍

[英]Internal calculation methods for Excel 'Analysis ToolPak' function YEARFRAC()
Algorithm inspired by www.dwheeler.com/yearfrac
[中]Excel“Analysis ToolPak”函数YEARFRAC()的内部计算方法
算法灵感来源于www.dwheeler。com/yearfrac

代码示例

代码示例来源:origin: org.apache.poi/poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis1(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  double yearLength;
  if (isGreaterThanOneYear(startDate, endDate)) {
    yearLength = averageYearLength(startDate.year, endDate.year);
  } else if (shouldCountFeb29(startDate, endDate)) {
    yearLength = DAYS_PER_LEAP_YEAR;
  } else {
    yearLength = DAYS_PER_NORMAL_YEAR;
  }
  return dateDiff(startDate.tsMilliseconds, endDate.tsMilliseconds) / yearLength;
}

代码示例来源:origin: org.apache.poi/poi

public static double calculate(double pStartDateVal, double pEndDateVal, int basis) throws EvaluationException {
  if (basis < 0 || basis >= 5) {
    // if basis is invalid the result is #NUM!
    throw new EvaluationException(ErrorEval.NUM_ERROR);
  }
  // common logic for all bases
  // truncate day values
  int startDateVal = (int) Math.floor(pStartDateVal);
  int endDateVal = (int) Math.floor(pEndDateVal);
  if (startDateVal == endDateVal) {
    // when dates are equal, result is zero 
    return 0;
  }
  // swap start and end if out of order
  if (startDateVal > endDateVal) {
    int temp = startDateVal;
    startDateVal = endDateVal;
    endDateVal = temp;
  }
  switch (basis) {
    case 0: return basis0(startDateVal, endDateVal);
    case 1: return basis1(startDateVal, endDateVal);
    case 2: return basis2(startDateVal, endDateVal);
    case 3: return basis3(startDateVal, endDateVal);
    case 4: return basis4(startDateVal, endDateVal);
  }
  throw new IllegalStateException("cannot happen");
}

代码示例来源:origin: org.apache.poi/poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis0(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  int date1day = startDate.day;
  int date2day = endDate.day;
  // basis zero has funny adjustments to the day-of-month fields when at end-of-month 
  if (date1day == LONG_MONTH_LEN && date2day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
    date2day = SHORT_MONTH_LEN;
  } else if (date1day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
  } else if (date1day == SHORT_MONTH_LEN && date2day == LONG_MONTH_LEN) {
    date2day = SHORT_MONTH_LEN;
    // Note: If date2day==31, it STAYS 31 if date1day < 30.
    // Special fixes for February:
  } else if (startDate.month == 2 && isLastDayOfMonth(startDate)) {
    // Note - these assignments deliberately set Feb 30 date.
    date1day = SHORT_MONTH_LEN;
    if (endDate.month == 2 && isLastDayOfMonth(endDate)) {
      // only adjusted when first date is last day in Feb
      date2day = SHORT_MONTH_LEN;
    }
  }
  return calculateAdjusted(startDate, endDate, date1day, date2day);
}
/**

代码示例来源:origin: org.apache.poi/poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis4(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  int date1day = startDate.day;
  int date2day = endDate.day;
  // basis four has funny adjustments to the day-of-month fields when at end-of-month 
  if (date1day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
  }
  if (date2day == LONG_MONTH_LEN) {
    date2day = SHORT_MONTH_LEN;
  }
  // Note - no adjustments for end of Feb
  return calculateAdjusted(startDate, endDate, date1day, date2day);
}

代码示例来源:origin: org.apache.poi/poi

public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
  int srcCellRow = ec.getRowIndex();
  int srcCellCol = ec.getColumnIndex();
  double result;
  try {
    int basis = 0; // default
    switch(args.length) {
      case 3:
        basis = evaluateIntArg(args[2], srcCellRow, srcCellCol);
        // fall through
      case 2:
        break;
      default:
        return ErrorEval.VALUE_INVALID;
    }
    double startDateVal = evaluateDateArg(args[0], srcCellRow, srcCellCol);
    double endDateVal = evaluateDateArg(args[1], srcCellRow, srcCellCol);
    result = YearFracCalculator.calculate(startDateVal, endDateVal, basis);
  } catch (EvaluationException e) {
    return e.getErrorEval();
  }
  return new NumberEval(result);
}

代码示例来源:origin: com.haulmont.thirdparty/poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis4(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  int date1day = startDate.day;
  int date2day = endDate.day;
  // basis four has funny adjustments to the day-of-month fields when at end-of-month 
  if (date1day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
  }
  if (date2day == LONG_MONTH_LEN) {
    date2day = SHORT_MONTH_LEN;
  }
  // Note - no adjustments for end of Feb
  return calculateAdjusted(startDate, endDate, date1day, date2day);
}

代码示例来源:origin: org.openl.rules/org.openl.lib.poi.dev

public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
  int srcCellRow = ec.getRowIndex();
  int srcCellCol = ec.getColumnIndex();
  double result;
  try {
    int basis = 0; // default
    switch(args.length) {
      case 3:
        basis = evaluateIntArg(args[2], srcCellRow, srcCellCol);
      case 2:
        break;
      default:
        return ErrorEval.VALUE_INVALID;
    }
    double startDateVal = evaluateDateArg(args[0], srcCellRow, srcCellCol);
    double endDateVal = evaluateDateArg(args[1], srcCellRow, srcCellCol);
    result = YearFracCalculator.calculate(startDateVal, endDateVal, basis);
  } catch (EvaluationException e) {
    return e.getErrorEval();
  }
  return new NumberEval(result);
}

代码示例来源:origin: com.haulmont.thirdparty/poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis1(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  double yearLength;
  if (isGreaterThanOneYear(startDate, endDate)) {
    yearLength = averageYearLength(startDate.year, endDate.year);
  } else if (shouldCountFeb29(startDate, endDate)) {
    yearLength = DAYS_PER_LEAP_YEAR;
  } else {
    yearLength = DAYS_PER_NORMAL_YEAR;
  }
  return dateDiff(startDate.tsMilliseconds, endDate.tsMilliseconds) / yearLength;
}

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.poi

public static double calculate(double pStartDateVal, double pEndDateVal, int basis) throws EvaluationException {
  if (basis < 0 || basis >= 5) {
    // if basis is invalid the result is #NUM!
    throw new EvaluationException(ErrorEval.NUM_ERROR);
  }
  // common logic for all bases
  // truncate day values
  int startDateVal = (int) Math.floor(pStartDateVal);
  int endDateVal = (int) Math.floor(pEndDateVal);
  if (startDateVal == endDateVal) {
    // when dates are equal, result is zero 
    return 0;
  }
  // swap start and end if out of order
  if (startDateVal > endDateVal) {
    int temp = startDateVal;
    startDateVal = endDateVal;
    endDateVal = temp;
  }
  switch (basis) {
    case 0: return basis0(startDateVal, endDateVal);
    case 1: return basis1(startDateVal, endDateVal);
    case 2: return basis2(startDateVal, endDateVal);
    case 3: return basis3(startDateVal, endDateVal);
    case 4: return basis4(startDateVal, endDateVal);
  }
  throw new IllegalStateException("cannot happen");
}

代码示例来源:origin: org.openl.rules/org.openl.lib.poi.dev

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis0(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  int date1day = startDate.day;
  int date2day = endDate.day;
  // basis zero has funny adjustments to the day-of-month fields when at end-of-month 
  if (date1day == LONG_MONTH_LEN && date2day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
    date2day = SHORT_MONTH_LEN;
  } else if (date1day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
  } else if (date1day == SHORT_MONTH_LEN && date2day == LONG_MONTH_LEN) {
    date2day = SHORT_MONTH_LEN;
    // Note: If date2day==31, it STAYS 31 if date1day < 30.
    // Special fixes for February:
  } else if (startDate.month == 2 && isLastDayOfMonth(startDate)) {
    // Note - these assignments deliberately set Feb 30 date.
    date1day = SHORT_MONTH_LEN;
    if (endDate.month == 2 && isLastDayOfMonth(endDate)) {
      // only adjusted when first date is last day in Feb
      date2day = SHORT_MONTH_LEN;
    }
  }
  return calculateAdjusted(startDate, endDate, date1day, date2day);
}
/**

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis4(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  int date1day = startDate.day;
  int date2day = endDate.day;
  // basis four has funny adjustments to the day-of-month fields when at end-of-month 
  if (date1day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
  }
  if (date2day == LONG_MONTH_LEN) {
    date2day = SHORT_MONTH_LEN;
  }
  // Note - no adjustments for end of Feb
  return calculateAdjusted(startDate, endDate, date1day, date2day);
}

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.poi

public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
  int srcCellRow = ec.getRowIndex();
  int srcCellCol = ec.getColumnIndex();
  double result;
  try {
    int basis = 0; // default
    switch(args.length) {
      case 3:
        basis = evaluateIntArg(args[2], srcCellRow, srcCellCol);
        // fall through
      case 2:
        break;
      default:
        return ErrorEval.VALUE_INVALID;
    }
    double startDateVal = evaluateDateArg(args[0], srcCellRow, srcCellCol);
    double endDateVal = evaluateDateArg(args[1], srcCellRow, srcCellCol);
    result = YearFracCalculator.calculate(startDateVal, endDateVal, basis);
  } catch (EvaluationException e) {
    return e.getErrorEval();
  }
  return new NumberEval(result);
}

代码示例来源:origin: org.openl.rules/org.openl.lib.poi.dev

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis1(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  double yearLength;
  if (isGreaterThanOneYear(startDate, endDate)) {
    yearLength = averageYearLength(startDate.year, endDate.year);
  } else if (shouldCountFeb29(startDate, endDate)) {
    yearLength = DAYS_PER_LEAP_YEAR;
  } else {
    yearLength = DAYS_PER_NORMAL_YEAR;
  }
  return dateDiff(startDate.tsMilliseconds, endDate.tsMilliseconds) / yearLength;
}

代码示例来源:origin: com.haulmont.thirdparty/poi

public static double calculate(double pStartDateVal, double pEndDateVal, int basis) throws EvaluationException {
  if (basis < 0 || basis >= 5) {
    // if basis is invalid the result is #NUM!
    throw new EvaluationException(ErrorEval.NUM_ERROR);
  }
  // common logic for all bases
  // truncate day values
  int startDateVal = (int) Math.floor(pStartDateVal);
  int endDateVal = (int) Math.floor(pEndDateVal);
  if (startDateVal == endDateVal) {
    // when dates are equal, result is zero 
    return 0;
  }
  // swap start and end if out of order
  if (startDateVal > endDateVal) {
    int temp = startDateVal;
    startDateVal = endDateVal;
    endDateVal = temp;
  }
  switch (basis) {
    case 0: return basis0(startDateVal, endDateVal);
    case 1: return basis1(startDateVal, endDateVal);
    case 2: return basis2(startDateVal, endDateVal);
    case 3: return basis3(startDateVal, endDateVal);
    case 4: return basis4(startDateVal, endDateVal);
  }
  throw new IllegalStateException("cannot happen");
}

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis0(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  int date1day = startDate.day;
  int date2day = endDate.day;
  // basis zero has funny adjustments to the day-of-month fields when at end-of-month 
  if (date1day == LONG_MONTH_LEN && date2day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
    date2day = SHORT_MONTH_LEN;
  } else if (date1day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
  } else if (date1day == SHORT_MONTH_LEN && date2day == LONG_MONTH_LEN) {
    date2day = SHORT_MONTH_LEN;
    // Note: If date2day==31, it STAYS 31 if date1day < 30.
    // Special fixes for February:
  } else if (startDate.month == 2 && isLastDayOfMonth(startDate)) {
    // Note - these assignments deliberately set Feb 30 date.
    date1day = SHORT_MONTH_LEN;
    if (endDate.month == 2 && isLastDayOfMonth(endDate)) {
      // only adjusted when first date is last day in Feb
      date2day = SHORT_MONTH_LEN;
    }
  }
  return calculateAdjusted(startDate, endDate, date1day, date2day);
}
/**

代码示例来源:origin: org.openl.rules/org.openl.lib.poi.dev

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis4(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  int date1day = startDate.day;
  int date2day = endDate.day;
  // basis four has funny adjustments to the day-of-month fields when at end-of-month 
  if (date1day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
  }
  if (date2day == LONG_MONTH_LEN) {
    date2day = SHORT_MONTH_LEN;
  }
  // Note - no adjustments for end of Feb
  return calculateAdjusted(startDate, endDate, date1day, date2day);
}

代码示例来源:origin: com.haulmont.thirdparty/poi

public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
  int srcCellRow = ec.getRowIndex();
  int srcCellCol = ec.getColumnIndex();
  double result;
  try {
    int basis = 0; // default
    switch(args.length) {
      case 3:
        basis = evaluateIntArg(args[2], srcCellRow, srcCellCol);
      case 2:
        break;
      default:
        return ErrorEval.VALUE_INVALID;
    }
    double startDateVal = evaluateDateArg(args[0], srcCellRow, srcCellCol);
    double endDateVal = evaluateDateArg(args[1], srcCellRow, srcCellCol);
    result = YearFracCalculator.calculate(startDateVal, endDateVal, basis);
  } catch (EvaluationException e) {
    return e.getErrorEval();
  }
  return new NumberEval(result);
}

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis1(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  double yearLength;
  if (isGreaterThanOneYear(startDate, endDate)) {
    yearLength = averageYearLength(startDate.year, endDate.year);
  } else if (shouldCountFeb29(startDate, endDate)) {
    yearLength = DAYS_PER_LEAP_YEAR;
  } else {
    yearLength = DAYS_PER_NORMAL_YEAR;
  }
  return dateDiff(startDate.tsMilliseconds, endDate.tsMilliseconds) / yearLength;
}

代码示例来源:origin: org.openl.rules/org.openl.lib.poi.dev

public static double calculate(double pStartDateVal, double pEndDateVal, int basis) throws EvaluationException {
  if (basis < 0 || basis >= 5) {
    // if basis is invalid the result is #NUM!
    throw new EvaluationException(ErrorEval.NUM_ERROR);
  }
  // common logic for all bases
  // truncate day values
  int startDateVal = (int) Math.floor(pStartDateVal);
  int endDateVal = (int) Math.floor(pEndDateVal);
  if (startDateVal == endDateVal) {
    // when dates are equal, result is zero 
    return 0;
  }
  // swap start and end if out of order
  if (startDateVal > endDateVal) {
    int temp = startDateVal;
    startDateVal = endDateVal;
    endDateVal = temp;
  }
  switch (basis) {
    case 0: return basis0(startDateVal, endDateVal);
    case 1: return basis1(startDateVal, endDateVal);
    case 2: return basis2(startDateVal, endDateVal);
    case 3: return basis3(startDateVal, endDateVal);
    case 4: return basis4(startDateVal, endDateVal);
  }
  throw new IllegalStateException("cannot happen");
}

代码示例来源:origin: com.haulmont.thirdparty/poi

/**
 * @param startDateVal assumed to be less than or equal to endDateVal
 * @param endDateVal assumed to be greater than or equal to startDateVal
 */
public static double basis0(int startDateVal, int endDateVal) {
  SimpleDate startDate = createDate(startDateVal);
  SimpleDate endDate = createDate(endDateVal);
  int date1day = startDate.day;
  int date2day = endDate.day;
  // basis zero has funny adjustments to the day-of-month fields when at end-of-month 
  if (date1day == LONG_MONTH_LEN && date2day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
    date2day = SHORT_MONTH_LEN;
  } else if (date1day == LONG_MONTH_LEN) {
    date1day = SHORT_MONTH_LEN;
  } else if (date1day == SHORT_MONTH_LEN && date2day == LONG_MONTH_LEN) {
    date2day = SHORT_MONTH_LEN;
    // Note: If date2day==31, it STAYS 31 if date1day < 30.
    // Special fixes for February:
  } else if (startDate.month == 2 && isLastDayOfMonth(startDate)) {
    // Note - these assignments deliberately set Feb 30 date.
    date1day = SHORT_MONTH_LEN;
    if (endDate.month == 2 && isLastDayOfMonth(endDate)) {
      // only adjusted when first date is last day in Feb
      date2day = SHORT_MONTH_LEN;
    }
  }
  return calculateAdjusted(startDate, endDate, date1day, date2day);
}
/**

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com