package com.ether; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jetbrains.annotations.Nullable; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * @author vmipsl * @date 2011 */ public abstract class DateHelper { /** * Set the date with a default locale (french) * * @param date date to formate * @return a new date set to midnight */ public static Date to00h00m00s( final Date date ) { assert ( null != date ); final Calendar calendar = Calendar.getInstance( Locale.FRENCH ); return setMinimumFields( date, calendar ); } /** * Set the date with a default locale (french) * * @param date date to formate * @return a new date set to 23h 59m 59s */ public static Date to23h59m59s( final Date date ) { assert ( null != date ); final Calendar calendar = Calendar.getInstance( Locale.FRENCH ); return setMaximumFields( date, calendar ); } /** * Set the date using the given locale * * @param locale locale to use * @param date date to formate * @return a new date set to midnight */ public static Date to00h00m00s( final Locale locale, final Date date ) { assert ( null != date ); final Calendar calendar = Calendar.getInstance( locale ); return setMinimumFields( date, calendar ); } /** * Set the date using the given locale * * @param locale locale to use * @param date date to formate * @return a new date set to 23h 59m 59s */ public static Date to23h59m59s( final Locale locale, final Date date ) { assert ( null != date ); final Calendar calendar = Calendar.getInstance( locale ); return setMaximumFields( date, calendar ); } private static Date setMinimumFields( final Date date, final Calendar calendar ) { calendar.setTime( date ); calendar.set( Calendar.HOUR_OF_DAY, calendar.getMinimum( Calendar.HOUR_OF_DAY ) ); calendar.set( Calendar.MINUTE, calendar.getMinimum( Calendar.MINUTE ) ); calendar.set( Calendar.SECOND, calendar.getMinimum( Calendar.SECOND ) ); return calendar.getTime(); } private static Date setMaximumFields( final Date date, final Calendar calendar ) { calendar.setTime( date ); calendar.set( Calendar.HOUR_OF_DAY, calendar.getMaximum( Calendar.HOUR_OF_DAY ) ); calendar.set( Calendar.MINUTE, calendar.getMaximum( Calendar.MINUTE ) ); calendar.set( Calendar.SECOND, calendar.getMaximum( Calendar.SECOND ) ); return calendar.getTime(); } public static String shortFormatFrench( final Date date ) { return formatDate( date, FRENCH_DATE_PATTERN_SHORT ); } public static String shortFormat( final Date date, final Locale locale ) { if( date == null ) return ""; final DateFormat dateFormat = DateFormat.getDateInstance( DateFormat.SHORT, locale ); return dateFormat.format( date ); } public static String orderedFormat( final Date date ) { return formatDate( date, ORDERED_FORMAT ); } public static String orderedFormatPlusGMT( final Date date ) { return formatDate( date, ORDERED_FORMAT_PLUS_GMT ); } public static String formatDate( @Nullable final Date date, final String format ) { if( date == null ) return ""; final SimpleDateFormat simpleDateFormat = new SimpleDateFormat( format ); return simpleDateFormat.format( date ); } @Nullable public static Date parseDate( @Nullable final String date, final String format ) throws ParseException { if( date == null ) return null; final SimpleDateFormat simpleDateFormat = new SimpleDateFormat( format ); return simpleDateFormat.parse(date); } private static final Log LOGGER = LogFactory.getLog( DateHelper.class ); public static final String FRENCH_DATE_PATTERN_SHORT = "dd/MM/yyyy"; public static final String ENGLISH_DATE_PATTERN_SHORT = "yyyy-MM-dd"; public static final String ENGLISH_DATE_PATTERN = "yyyy-MM-dd HH:mm"; public static final String ORDERED_FORMAT_PLUS_GMT = "yyyy-MM-dd HH:mm:ss.SSSS Z"; public static final String ORDERED_FORMAT = "yyyy-MM-dd HH:mm:ss.SSSS"; }