Make the date go back of the specified amount of days : Date Calculation « Data Type « Java






Make the date go back of the specified amount of days

     

/*
 * Funambol is a mobile platform developed by Funambol, Inc. 
 * Copyright (C) 2003 - 2007 Funambol, Inc.
 * 
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Affero General Public License version 3 as published by
 * the Free Software Foundation with the addition of the following permission 
 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE 
 * WARRANTY OF NON INFRINGEMENT  OF THIRD PARTY RIGHTS.
 * 
 * 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 Affero General Public License 
 * along with this program; if not, see http://www.gnu.org/licenses or write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301 USA.
 * 
 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite 
 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
 * 
 * The interactive user interfaces in modified source and object code versions
 * of this program must display Appropriate Legal Notices, as required under
 * Section 5 of the GNU Affero General Public License version 3.
 * 
 * In accordance with Section 7(b) of the GNU Affero General Public License
 * version 3, these Appropriate Legal Notices must retain the display of the
 * "Powered by Funambol" logo. If the display of the logo is not reasonably 
 * feasible for technical reasons, the Appropriate Legal Notices must display
 * the words "Powered by Funambol".
 */


import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;


/**
 * Utility class for date manipulation.
 * This class gives a simple interface for common Date, Calendar and Timezone
 * operations.
 * It is possible to apply subsequent transformations to an initial date, and
 * retrieve the changed Date object at any point.
 *
 */
public class DateUtil {
    
    //-------------------------------------------------------------- Attributes
    private Calendar cal;
    
    //------------------------------------------------------------ Constructors
    
    /** Inizialize a new instance with the current date */
    public DateUtil() {
        this(new Date());
    }
    
    /** Inizialize a new instance with the given date */
    public DateUtil(Date d) {
        cal = Calendar.getInstance();
        cal.setTime(d);
    }
    
    //---------------------------------------------------------- Public methods
    
    /** Set a new time */
    public void setTime(Date d) {
        cal.setTime(d);
    }
    
    /** Get the current time */
    public Date getTime() {
        return cal.getTime();
    }
    
    /** Get the current TimeZone */
    public String getTZ() {
        return cal.getTimeZone().getID();
    }
    
    /**
     * Convert the time to the midnight of the currently set date.
     * The internal date is changed after this call.
     *
     * @return a reference to this DateUtil, for concatenation.
     */
    public DateUtil toMidnight() {
        
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND,0);
        
        return this;
    }
    
    /**
     * Make the date go back of the specified amount of days
     * The internal date is changed after this call.
     *
     * @return a reference to this DateUtil, for concatenation.
     */
    public DateUtil removeDays(int days) {
        
        Date d = cal.getTime();
        long time = d.getTime();
        time -= days * 24 * 3600 * 1000;
        d.setTime(time);
        cal.setTime(d);
        
        return this;
    }
    
    /**
     * Make the date go forward of the specified amount of minutes
     * The internal date is changed after this call.
     *
     * @return a reference to this DateUtil, for concatenation.
     */
    public DateUtil addMinutes(int minutes) {
        Date d = cal.getTime();
        long time = d.getTime();
        time += minutes * 60 * 1000;
        d.setTime(time);
        cal.setTime(d);
        
        return this;
    }
    
    /**
     * Convert the date to GMT. The internal date is changed
     *
     * @return a reference to this DateUtil, for concatenation.
     */
    public DateUtil toGMT() {
        return toTZ("GMT");
    }
    
    /**
     * Convert the date to the given timezone. The internal date is changed.
     *
     * @param tz The name of the timezone to set
     *
     * @return a reference to this DateUtil, for concatenation.
     */
    public DateUtil toTZ(String tz) {
        cal.setTimeZone(TimeZone.getTimeZone(tz));
        
        return this;
    }
    
    /**
     * Get the days passed from the specified date up to the date provided 
     * in the constructor
     *
     * @param date The starting date
     *
     * @return number of days within date used in constructor and the provided
     * date
     */
    public int getDaysSince(Date date) {
        long millisecs = date.getTime();
        Date d = cal.getTime();
        long time = d.getTime();
        long daysMillisecs = time - millisecs;
        int days = (int)((((daysMillisecs / 1000)/60)/60)/24);
        return days;
    }
    
    /**
     * Utility method wrapping Calendar.after method
     * Compares the date field parameter with the date provided with the constructor
     * answering the question: date from constructor is after the given param date ?
     *
     * @param date The date to be used for comparison
     *
     * @return true if date from constructor is after given param date
     */
    public boolean isAfter(Date date) {
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date);
        return cal.after(cal2);
    }
}

   
    
    
    
    
  








Related examples in the same category

1.Get the days difference
2.Get the days passed from the specified date up to the date provided in the constructor
3.Get the hours difference
4.Get the minutes difference
5.Get the seconds difference
6.Adds a number of days to a date returning a new object.
7.Adds a number of hours to a date returning a new object.
8.Adds a number of milliseconds to a date returning a new object.
9.Adds a number of minutes to a date returning a new object.
10.Adds a number of months to a date returning a new object.
11.Adds a number of seconds to a date returning a new object.
12.Adds a number of weeks to a date returning a new object.
13.Adds a number of years to a date returning a new object.
14.Returns a Date set just to Noon, to the closest possible millisecond of the day.
15.Returns a Date set to the first possible millisecond of the day, just after midnight.
16.Returns a Date set to the first possible millisecond of the month, just after midnight.
17.Returns a Date set to the last possible millisecond of the day, just before midnight.
18.Returns a Date set to the last possible millisecond of the minute.
19.Returns a Date set to the last possible millisecond of the month, just before midnight.
20.Returns a java.sql.Timestamp equal to the current time
21.Returns the number of days within the fragment.
22.Returns the number of hours within the fragment.
23.Returns the number of milliseconds within the fragment.
24.Returns the number of minutes within the fragment.
25.Returns the number of seconds within the fragment.
26.Returns true if endDate is after startDate or if startDate equals endDate.
27.Roll the days forward or backward
28.Roll the java.sql.Date forward or backward
29.Roll the java.util.Date forward or backward
30.Roll the java.util.Time forward or backward
31.Roll the years forward or backward
32.Round this date, leaving the field specified as the most significant field.
33.Checking date as String formatted by a date format
34.Checks if a calendar date is after today and within a number of days in the future
35.Checks if a calendar date is today
36.Checks if a date is after today and within a number of days in the future
37.Checks if the first calendar date is after the second calendar date ignoring time
38.Checks if the first calendar date is before the second calendar date ignoring time
39.Checks if the first date is after the second date ignoring time
40.Checks if the first date is before the second date ignoring time
41.Checks if two calendars represent the same day ignoring time
42.Checks if two dates are on the same day ignoring time
43.Checks the day, month and year are equal
44.Checks the hour, minute and second are equal
45.Make the date go forward of the specified amount of minutes
46.Returns the maximum of two dates. A null date is treated as being less than any non-null date
47.Utilities to working with dates java.util.Date
48.Calculate Holidays
49.Compare two dates
50.Convert time in milliseconds into a display string of the form [h]h:mm[am|pm]
51.convert a minute-of-week time to time of day as dd:dd [AM|PM]
52.Convert a minute-of-week time to time of day as dd:dd (24 hour format)
53.Convert passed time into an offset string
54.convert date in milliseconds into the native format of the server - i.e. minute of the week
55.Convert date in milliseconds into minute of the day
56.Convert date in minute of the week format into millisecond format
57.Convert milliseconds into the day of the week string
58.Convert milliseconds into a short day of the week string
59.Convert milliseconds into the month of the year string
60.Convert time to a sliding window format
61.Get age
62.Get Next Monday
63.Get next Sunday
64.Get File system Path From Date
65.Get today's date
66.Get Month, Day of Month, year from a Date
67.A method to get the last day of a month
68.Get Age
69.Get date of yesterday
70.Get date of last week
71.Get date of last month
72.Utility for setting the time on a date.
73.Get last Date of This Month
74.General purpose date utilities.
75.Get Last day from previous Month
76.Get Local Epoch