Here you can find the source of getDaysBetween(Timestamp start, Timestamp end)
Parameter | Description |
---|---|
start | start date |
end | end date |
static public int getDaysBetween(Timestamp start, Timestamp end)
//package com.java2s; /****************************************************************************** * The contents of this file are subject to the Compiere License Version 1.1 * ("License"); You may not use this file except in compliance with the License * You may obtain a copy of the License at http://www.compiere.org/license.html * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial * Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke * are Copyright (C) 1999-2005 Jorg Janke. * All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved. * Contributor(s): ______________________________________. *****************************************************************************/ import java.sql.Timestamp; import java.util.Calendar; import java.util.GregorianCalendar; public class Main { /**/*ww w . j a va2s .com*/ * Calculate the number of days between start and end. * @param start start date * @param end end date * @return number of days (0 = same) */ static public int getDaysBetween(Timestamp start, Timestamp end) { boolean negative = false; if (end.before(start)) { negative = true; Timestamp temp = start; start = end; end = temp; } // GregorianCalendar cal = new GregorianCalendar(); cal.setTime(start); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); GregorianCalendar calEnd = new GregorianCalendar(); calEnd.setTime(end); calEnd.set(Calendar.HOUR_OF_DAY, 0); calEnd.set(Calendar.MINUTE, 0); calEnd.set(Calendar.SECOND, 0); calEnd.set(Calendar.MILLISECOND, 0); // System.out.println("Start=" + start + ", End=" + end + ", dayStart=" + cal.get(Calendar.DAY_OF_YEAR) + ", dayEnd=" + calEnd.get(Calendar.DAY_OF_YEAR)); // in same year if (cal.get(Calendar.YEAR) == calEnd.get(Calendar.YEAR)) { if (negative) return (calEnd.get(Calendar.DAY_OF_YEAR) - cal.get(Calendar.DAY_OF_YEAR)) * -1; return calEnd.get(Calendar.DAY_OF_YEAR) - cal.get(Calendar.DAY_OF_YEAR); } // not very efficient, but correct int counter = 0; while (calEnd.after(cal)) { cal.add(Calendar.DAY_OF_YEAR, 1); counter++; } if (negative) return counter * -1; return counter; } }