View Javadoc

1   /***
2    *  The contents of this file are subject to the Mozilla Public
3    *  License Version 1.1 (the "License"); you may not use this file
4    *  except in compliance with the License. You may obtain a copy of
5    *  the License at http://www.mozilla.org/MPL/
6    *
7    *  Software distributed under the License is distributed on an "AS
8    *  IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9    *  implied. See the License for the specific language governing
10   *  rights and limitations under the License.
11   *
12   *  The Original Code is pow2toolkit library.
13   *
14   *  The Initial Owner of the Original Code is
15   *  Power Of Two S.R.L. (www.pow2.com)
16   *
17   *  Portions created by Power Of Two S.R.L. are
18   *  Copyright (C) Power Of Two S.R.L.
19   *  All Rights Reserved.
20   *
21   * Contributor(s):
22   */
23  
24  package com.pow2.util;
25  
26  import java.text.*;
27  import java.util.*;
28  
29  import org.apache.log4j.Category;
30  
31  
32  /***
33   *  Date utility class.
34   *
35   *  @author Luca Fossato
36   */
37  public class DateUtil
38  {
39    /*** Log4j category. */
40    private static Category cat = Category.getInstance(DateUtil.class);
41  
42  
43    /***
44     *  Get the current date string representation.
45     *
46     * @param dateFormat the input dateFormat.
47     *        See the <code>java.text.SimpleDateFormat</code> API for date format
48     *        string examples
49     */
50    public static String getCurrentDateString(String dateFormat)
51    {
52      Calendar         cal = Calendar.getInstance(TimeZone.getDefault());
53      SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
54      sdf.setTimeZone(TimeZone.getDefault());
55  
56      return sdf.format(cal.getTime());
57    }
58  
59  
60    /***
61     *  Get the string representation of the input Date object
62     *
63     * @param date       the input Date object
64     * @param dateFormat a date format string like "dd/MM/yyyy"
65     * @return the string representation of the input Date object
66     */
67    public static String getDateString(Date date, String dateFormat)
68    {
69      SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
70      return sdf.format(date);
71    }
72  
73  
74    /***
75     *  Get a java Date object from an input date string representation.
76     *  <br>
77     *  See the <code>java.text.SimpleDateFormat</code> API for date format string
78     *  examples.
79     *
80     * @param  sDate       the date string representation
81     * @param  dateFormat  a date format string like "dd/MM/yyyy"
82     * @return             the Date object corresponding to the input date string,
83     *                     or null if the conversion fails
84     */
85    public static Date getDate(String sDate, String dateFormat)
86    {
87      SimpleDateFormat fmt    = new SimpleDateFormat(dateFormat);
88      ParsePosition    pos    = new ParsePosition(0);
89  
90      return fmt.parse(sDate, pos);
91    }
92  
93  
94    /***
95     *  Add the input number of days to the startDate string representation.
96     *
97     * @param startDate  the start date string representation
98     * @param dateFormat the start date format
99     * @param days       the number of days to add to the startDate
100    * @return the Date object representing the resulting date
101    */
102   public static Date addDays(String startDate, String dateFormat, int days)
103   {
104     return addDays(getDate(startDate, dateFormat), days);
105   }
106 
107 
108   /***
109    *  Add the input number of days to the start Date object.
110    *
111    * @param startDate  the start Date object
112    * @param days       the number of days to add to the startDate object
113    * @return the Date object representing the resulting date
114    */
115   public static Date addDays(Date startDate, int days)
116   {
117     GregorianCalendar gCal = new GregorianCalendar();
118     gCal.setTime(startDate);
119     gCal.add(Calendar.DATE, days);
120 
121     return gCal.getTime();
122   }
123 
124 
125   /***
126    *  Check if the <code>d</code> input date is between <code>d1</code> and
127    *  <code>d2</code>.
128    *
129    * @param  d   the date to check
130    * @param  d1  the lower boundary date
131    * @param  d2  the upper boundary date
132    * @return     true if d1 <= d <= d2, false otherwise
133    */
134   public static boolean isDateBetween(Date d, Date d1, Date d2)
135   {
136     return ((d1.before(d) || d1.equals(d)) &&
137             (d.before(d2) || d.equals(d2)));
138   }
139 }