Java Timestamp Field getDaysBetween(Timestamp start, Timestamp end)

Here you can find the source of getDaysBetween(Timestamp start, Timestamp end)

Description

Calculate the number of days between start and end.

License

Open Source License

Parameter

Parameter Description
start start date
end end date

Return

number of days (0 = same)

Declaration

static public int getDaysBetween(Timestamp start, Timestamp end) 

Method Source Code

//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;
    }
}

Related

  1. getDayBorder(Timestamp dateTime, Timestamp timeSlot, boolean end)
  2. getDayEnd(java.sql.Timestamp stamp, int daysLater)
  3. getDayOfMonthBy(Timestamp ts)
  4. getDayOfTime(Timestamp timestamp)
  5. getDayOfWeek(Timestamp timestamp)
  6. getDayStartTimestamp()
  7. getDayTime(Timestamp day, Timestamp time)
  8. getDefaultTimestamp()
  9. getDiffDay(Timestamp time1, Timestamp time2)