source: tapas/common/implementation/com/ether/DateHelper.java @ 469

Last change on this file since 469 was 469, checked in by vmipsl, 12 years ago

DateHelper? addHours

File size: 4.9 KB
Line 
1package com.ether;
2
3import org.apache.commons.logging.Log;
4import org.apache.commons.logging.LogFactory;
5import org.jetbrains.annotations.NotNull;
6import org.jetbrains.annotations.Nullable;
7
8import java.text.DateFormat;
9import java.text.ParseException;
10import java.text.SimpleDateFormat;
11import java.util.Calendar;
12import java.util.Date;
13import java.util.Locale;
14
15/**
16 * @author vmipsl
17 * @date 2011
18 */
19public abstract class DateHelper
20{
21    /**
22     * Set the date with a default locale (french)
23     *
24     * @param date date to formate
25     * @return a new date set to midnight
26     */
27    public static Date to00h00m00s( final Date date )
28    {
29        assert ( null != date );
30        final Calendar calendar = Calendar.getInstance( Locale.FRENCH );
31
32        return setMinimumFields( date, calendar );
33    }
34
35    /**
36     * Set the date with a default locale (french)
37     *
38     * @param date date to formate
39     * @return a new date set to 23h 59m 59s
40     */
41    public static Date to23h59m59s( final Date date )
42    {
43        assert ( null != date );
44        final Calendar calendar = Calendar.getInstance( Locale.FRENCH );
45
46        return setMaximumFields( date, calendar );
47    }
48
49    /**
50     * Set the date using the given locale
51     *
52     * @param locale locale to use
53     * @param date   date to formate
54     * @return a new date set to midnight
55     */
56    public static Date to00h00m00s( final Locale locale, final Date date )
57    {
58        assert ( null != date );
59        final Calendar calendar = Calendar.getInstance( locale );
60
61        return setMinimumFields( date, calendar );
62    }
63
64    /**
65     * Set the date using the given locale
66     *
67     * @param locale locale to use
68     * @param date   date to formate
69     * @return a new date set to 23h 59m 59s
70     */
71    public static Date to23h59m59s( final Locale locale, final Date date )
72    {
73        assert ( null != date );
74        final Calendar calendar = Calendar.getInstance( locale );
75
76        return setMaximumFields( date, calendar );
77    }
78
79
80    private static Date setMinimumFields( final Date date, final Calendar calendar )
81    {
82        calendar.setTime( date );
83        calendar.set( Calendar.HOUR_OF_DAY, calendar.getMinimum( Calendar.HOUR_OF_DAY ) );
84        calendar.set( Calendar.MINUTE, calendar.getMinimum( Calendar.MINUTE ) );
85        calendar.set( Calendar.SECOND, calendar.getMinimum( Calendar.SECOND ) );
86
87        return calendar.getTime();
88    }
89
90    private static Date setMaximumFields( final Date date, final Calendar calendar )
91    {
92        calendar.setTime( date );
93        calendar.set( Calendar.HOUR_OF_DAY, calendar.getMaximum( Calendar.HOUR_OF_DAY ) );
94        calendar.set( Calendar.MINUTE, calendar.getMaximum( Calendar.MINUTE ) );
95        calendar.set( Calendar.SECOND, calendar.getMaximum( Calendar.SECOND ) );
96
97        return calendar.getTime();
98    }
99
100    public static String shortFormatFrench( final Date date )
101    {
102        return formatDate( date, FRENCH_DATE_PATTERN_SHORT );
103    }
104
105    public static String shortFormat( final Date date, final Locale locale )
106    {
107        if( date == null )
108            return "";
109
110        final DateFormat dateFormat = DateFormat.getDateInstance( DateFormat.SHORT, locale );
111
112        return dateFormat.format( date );
113    }
114
115    public static String orderedFormat( final Date date )
116    {
117        return formatDate( date, ORDERED_FORMAT );
118    }
119
120    public static String orderedFormatPlusGMT( final Date date )
121    {
122        return formatDate( date, ORDERED_FORMAT_PLUS_GMT );
123    }
124
125    public static String formatDate( @Nullable final Date date, final String format )
126    {
127        if( date == null )
128            return "";
129
130        final SimpleDateFormat simpleDateFormat = new SimpleDateFormat( format );
131        return simpleDateFormat.format( date );
132    }
133
134    @Nullable
135    public static Date parseDate( @Nullable final String date, final String format )
136            throws ParseException
137    {
138        if( date == null )
139            return null;
140
141        final SimpleDateFormat simpleDateFormat = new SimpleDateFormat( format );
142        return simpleDateFormat.parse( date );
143    }
144
145    /**
146     * This method add some hours to a date
147     *
148     * @param date
149     * @param hoursNumber
150     * @return
151     */
152    public static Date addHourToDate( @NotNull final Date date, @NotNull final Integer hoursNumber )
153    {
154        final Calendar calendar = Calendar.getInstance();
155        calendar.setTime( date );
156        calendar.add( Calendar.HOUR, hoursNumber );
157        return calendar.getTime();
158    }
159
160    private static final Log LOGGER = LogFactory.getLog( DateHelper.class );
161
162    public static final String FRENCH_DATE_PATTERN_SHORT = "dd/MM/yyyy";
163    public static final String ENGLISH_DATE_PATTERN_SHORT = "yyyy-MM-dd";
164    public static final String ENGLISH_DATE_PATTERN = "yyyy-MM-dd HH:mm";
165
166    public static final String ORDERED_FORMAT_PLUS_GMT = "yyyy-MM-dd HH:mm:ss.SSSS Z";
167    public static final String ORDERED_FORMAT = "yyyy-MM-dd HH:mm:ss.SSSS";
168}
Note: See TracBrowser for help on using the repository browser.