ASF Bugzilla – Attachment 33323 Details for
Bug 58468
Not implemented function 'DAYS'
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Days function implementation
bug58468-days.patch (text/plain), 3.74 KB, created by
Javen O'Neal
on 2015-12-04 09:40:58 UTC
(
hide
)
Description:
Days function implementation
Filename:
MIME Type:
Creator:
Javen O'Neal
Created:
2015-12-04 09:40:58 UTC
Size:
3.74 KB
patch
obsolete
>Index: src/java/org/apache/poi/ss/formula/functions/Days.java >=================================================================== >--- src/java/org/apache/poi/ss/formula/functions/Days.java (revision 0) >+++ src/java/org/apache/poi/ss/formula/functions/Days.java (working copy) >@@ -0,0 +1,80 @@ >+/* ==================================================================== >+ Licensed to the Apache Software Foundation (ASF) under one or more >+ contributor license agreements. See the NOTICE file distributed with >+ this work for additional information regarding copyright ownership. >+ The ASF licenses this file to You under the Apache License, Version 2.0 >+ (the "License"); you may not use this file except in compliance with >+ the License. You may obtain a copy of the License at >+ >+ http://www.apache.org/licenses/LICENSE-2.0 >+ >+ Unless required by applicable law or agreed to in writing, software >+ distributed under the License is distributed on an "AS IS" BASIS, >+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >+ See the License for the specific language governing permissions and >+ limitations under the License. >+==================================================================== */ >+package org.apache.poi.ss.formula.functions; >+ >+import java.util.Calendar; >+ >+import org.apache.poi.ss.formula.eval.EvaluationException; >+import org.apache.poi.ss.formula.eval.NumberEval; >+import org.apache.poi.ss.formula.eval.OperandResolver; >+import org.apache.poi.ss.formula.eval.ValueEval; >+import org.apache.poi.ss.usermodel.DateUtil; >+import org.apache.poi.util.LocaleUtil; >+ >+/** >+ * <p>Calculates the number of days between two dates based on a real year >+ * , which is used in some accounting calculations. Use >+ * this function to help compute payments if your accounting system is based on >+ * twelve 30-day months.</p> >+ * >+ * <p> >+ * {@code DAYS(end_date,start_date)} >+ * >+ * <ul> >+ * <li>Start_date, end_date (required):<br/> >+ * The two dates between which you want to know the number of days.<br/> >+ * If start_date occurs after end_date, the DAYS function returns a negative number.</li> >+ * >+ * </ul> >+ * </p> >+ * >+ * @see <a href="https://support.office.com/en-us/article/DAYS-function-57740535-D549-4395-8728-0F07BFF0B9DF">DAYS function - Microsoft Office</a> >+ */ >+public class Days extends Fixed2ArgFunction { >+ >+ private final static long MILLIS_PER_DAY = 1000*60*60*24; >+ >+ public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0, ValueEval arg1) { >+ double result; >+ try { >+ double d0 = NumericFunction.singleOperandEvaluate(arg0, srcRowIndex, srcColumnIndex); >+ double d1 = NumericFunction.singleOperandEvaluate(arg1, srcRowIndex, srcColumnIndex); >+ result = evaluate(d0, d1); >+ } catch (EvaluationException e) { >+ return e.getErrorEval(); >+ } >+ return new NumberEval(result); >+ } >+ >+ private static double evaluate(double d0, double d1) { >+ Calendar endDate = getDate(d0); >+ Calendar startDate = getDate(d1); >+ >+ return daysBetween(startDate.getTimeInMillis(), endDate.getTimeInMillis()); >+ } >+ >+ private static Calendar getDate(double date) { >+ Calendar processedDate = LocaleUtil.getLocaleCalendar(); >+ processedDate.setTime(DateUtil.getJavaDate(date, false)); >+ return processedDate; >+ } >+ >+ /** Replace me with org.joda.time.Days.daysBetween */ >+ private static double daysBetween(long start, long end) { >+ return (end - start) / MILLIS_PER_DAY; >+ } >+} > >Property changes on: src/java/org/apache/poi/ss/formula/functions/Days.java >___________________________________________________________________ >Added: svn:eol-style >## -0,0 +1 ## >+native >\ No newline at end of property
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 58468
:
33153
| 33323