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 | | |