From: Nick Burch Date: Mon, 17 Sep 2007 15:58:54 +0000 (+0000) Subject: Implementation of the Day function from Pavel Krupets X-Git-Tag: REL_3_0_2_BETA1~50 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e896bbbbf82c16a12dda32359814f47b3e460dcb;p=poi.git Implementation of the Day function from Pavel Krupets git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@576492 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Day.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Day.java index 7ffb1aff4d..283633442e 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Day.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Day.java @@ -14,12 +14,51 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* - * Created on May 15, 2005 - * - */ package org.apache.poi.hssf.record.formula.functions; -public class Day extends NotImplementedFunction { +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.hssf.record.formula.eval.Eval; +import org.apache.poi.hssf.record.formula.eval.ValueEval; +import org.apache.poi.hssf.record.formula.eval.BlankEval; +import org.apache.poi.hssf.record.formula.eval.ErrorEval; +import org.apache.poi.hssf.record.formula.eval.NumberEval; +import org.apache.poi.hssf.record.formula.eval.NumericValueEval; + +/** + * @author Pavel Krupets + */ +public class Day extends NumericFunction { + /** + * @see org.apache.poi.hssf.record.formula.functions.Function#evaluate(org.apache.poi.hssf.record.formula.eval.Eval[], int, short) + */ + public Eval evaluate(Eval[] operands, int srcCellRow, short +srcCellCol) { + ValueEval retval = null; + + switch (operands.length) { + default: + retval = ErrorEval.VALUE_INVALID; + break; + case 1: + ValueEval ve = singleOperandEvaluate(operands[0], +srcCellRow, srcCellCol); + if (ve instanceof NumericValueEval) { + NumericValueEval ne = (NumericValueEval) ve; + if (HSSFDateUtil.isValidExcelDate(ne.getNumberValue())) { + java.util.Date d = HSSFDateUtil.getJavaDate(ne.getNumberValue()); + java.util.Calendar c = java.util.Calendar.getInstance(); + c.setTime(d); + retval = new NumberEval(c.get(java.util.Calendar.DAY_OF_MONTH)); + } else { + retval = ErrorEval.NUM_ERROR; + } + } else if (ve instanceof BlankEval) { + // do nothing + } else { + retval = ErrorEval.NUM_ERROR; + } + } + return retval; + } }