Java examples for java.util:Day
Calculate the number of days between start and end.
/****************************************************************************** * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * * by the Free Software Foundation. This program is distributed in the hope * * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * * For the text or an alternative of this public license, you may reach us * * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * * or via info@compiere.org or http://www.compiere.org/license.html * *****************************************************************************/ //package com.java2s; import java.sql.Timestamp; import java.util.Calendar; import java.util.GregorianCalendar; public class Main { /**//w w w.java 2 s . c o m * 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; } }