Mega Code Archive

 
Categories / Java / Data Type
 

Get the seconds difference

/*  * Copyright Javelin Software, All rights reserved.  */ import java.util.*; import java.text.*; /**  * The DateUtil is used as a Utility Class for Dates.  *   * @author Robin Sharp  */ public class DateUtil  {     public final static long SECOND_MILLIS = 1000;     public final static long MINUTE_MILLIS = SECOND_MILLIS*60;     public final static long HOUR_MILLIS = MINUTE_MILLIS*60;     public final static long DAY_MILLIS = HOUR_MILLIS*24;     public final static long YEAR_MILLIS = DAY_MILLIS*365;     public static DateFormat OUT_DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");     public static DateFormat OUT_TIME_FORMAT = new SimpleDateFormat("H:mm:ss");     public static DateFormat OUT_DATETIME_FORMAT = new SimpleDateFormat("d/M/yyyy H:mm:ss");     public static DateFormat OUT_TIMESTAMP_FORMAT = new SimpleDateFormat("d/M/yy H:mm:ss.SSS");          public static DateFormat IN_DATE_FORMAT = new SimpleDateFormat("d/M/yy");     public static DateFormat IN_TIME_FORMAT = new SimpleDateFormat("H:mm:ss");     public static DateFormat IN_DATETIME_FORMAT = new SimpleDateFormat("d/M/yy H:mm:ss");     public static DateFormat IN_TIMESTAMP_FORMAT = new SimpleDateFormat("d/M/yy H:mm:ss.SSS");          public static DateFormat DATE_TIME_FORMAT= new SimpleDateFormat( "yyyyMMddkkmmss" );       public static Calendar calendar = new GregorianCalendar();     static     {         IN_DATE_FORMAT.setLenient(false);         IN_TIME_FORMAT.setLenient(false);         IN_DATETIME_FORMAT.setLenient(false);     }     /**      * Create a new DateTime. To the last second. This will not create any       * extra-millis-seconds, which may cause bugs when writing to stores such as      * databases that round milli-seconds up and down.       */     public static java.util.Date newDateTime()     {         return new java.util.Date( (System.currentTimeMillis()/SECOND_MILLIS)*SECOND_MILLIS);     }     /**      * Create a new Date. To the last day.      */     public static java.sql.Date newDate()     {         return new java.sql.Date( (System.currentTimeMillis()/DAY_MILLIS)*DAY_MILLIS);     }          /**      * Create a new Time, with no date component.       */     public static java.sql.Time newTime()     {         return new java.sql.Time( System.currentTimeMillis()%DAY_MILLIS);     }          /**      * Create a new Timestamp.       */     public static java.sql.Timestamp newTimestamp()     {         return new java.sql.Timestamp( System.currentTimeMillis() );     }          /**      * Get the seconds difference      */     public static int secondsDiff( Date earlierDate, Date laterDate )     {         if( earlierDate == null || laterDate == null ) return 0;                  return (int)((laterDate.getTime()/SECOND_MILLIS) - (earlierDate.getTime()/SECOND_MILLIS));     }     /**      * Get the minutes difference      */     public static int minutesDiff( Date earlierDate, Date laterDate )     {         if( earlierDate == null || laterDate == null ) return 0;                  return (int)((laterDate.getTime()/MINUTE_MILLIS) - (earlierDate.getTime()/MINUTE_MILLIS));     }          /**      * Get the hours difference      */     public static int hoursDiff( Date earlierDate, Date laterDate )     {         if( earlierDate == null || laterDate == null ) return 0;                  return (int)((laterDate.getTime()/HOUR_MILLIS) - (earlierDate.getTime()/HOUR_MILLIS));     }          /**      * Get the days difference      */     public static int daysDiff( Date earlierDate, Date laterDate )     {         if( earlierDate == null || laterDate == null ) return 0;                  return (int)((laterDate.getTime()/DAY_MILLIS) - (earlierDate.getTime()/DAY_MILLIS));     }         /**     * Roll the java.util.Time forward or backward.     * @param startDate - The start date     * @period Calendar.YEAR etc     * @param amount - Negative to rollbackwards.     */     public static java.sql.Time rollTime( java.util.Date startDate, int period, int amount )     {         GregorianCalendar gc = new GregorianCalendar();         gc.setTime(startDate);         gc.add(period, amount);         return new java.sql.Time(gc.getTime().getTime());     }         /**     * Roll the java.util.Date forward or backward.     * @param startDate - The start date     * @period Calendar.YEAR etc     * @param amount - Negative to rollbackwards.     */     public static java.util.Date rollDateTime( java.util.Date startDate, int period, int amount )     {         GregorianCalendar gc = new GregorianCalendar();         gc.setTime(startDate);         gc.add(period, amount);         return new java.util.Date(gc.getTime().getTime());     }         /**     * Roll the java.sql.Date forward or backward.     * @param startDate - The start date     * @period Calendar.YEAR etc     * @param amount - Negative to rollbackwards.     */     public static java.sql.Date rollDate( java.util.Date startDate, int period, int amount )     {         GregorianCalendar gc = new GregorianCalendar();         gc.setTime(startDate);         gc.add(period, amount);         return new java.sql.Date(gc.getTime().getTime());     }         /**     * Roll the years forward or backward.     * @param startDate - The start date     * @param years - Negative to rollbackwards.     */     public static java.sql.Date rollYears( java.util.Date startDate, int years )     {         return rollDate( startDate, Calendar.YEAR, years );     }    /**     * Roll the days forward or backward.     * @param startDate - The start date     * @param months - Negative to rollbackwards.     */     public static java.sql.Date rollMonths( java.util.Date startDate, int months )     {         return rollDate( startDate, Calendar.MONTH, months );     }    /**     * Roll the days forward or backward.     * @param startDate - The start date     * @param days - Negative to rollbackwards.     */     public static java.sql.Date rollDays( java.util.Date startDate, int days )     {         return rollDate( startDate, Calendar.DATE, days );     }           /**       * Checks the day, month and year are equal.       */      public static boolean dateEquals( java.util.Date d1, java.util.Date d2 )      {         if( d1 == null || d2 == null ) return false;                  return d1.getDate() == d2.getDate() &&                d1.getMonth() == d2.getMonth() &&                d1.getYear() == d2.getYear();      }            /**       * Checks the hour, minute and second are equal.       */      public static boolean timeEquals( java.util.Date d1, java.util.Date d2 )      {         if( d1 == null || d2 == null ) return false;                  return d1.getHours() == d2.getHours() &&                d1.getMinutes() == d2.getMinutes() &&                d1.getSeconds() == d2.getSeconds();      }     /**       * Checks the second, hour, month, day, month and year are equal.       */      public static boolean dateTimeEquals( java.util.Date d1, java.util.Date d2 )      {         if( d1 == null || d2 == null ) return false;                                 return d1.getDate() == d2.getDate() &&                d1.getMonth() == d2.getMonth() &&                d1.getYear() == d2.getYear() &&                d1.getHours() == d2.getHours() &&                d1.getMinutes() == d2.getMinutes() &&                d1.getSeconds() == d2.getSeconds();      }            /**      * Convert an Object of type Classs to an Object.      */     public static Object toObject( Class clazz, Object value ) throws ParseException     {         if( value == null ) return null;         if( clazz == null ) return value;                  if( java.sql.Date.class.isAssignableFrom( clazz ) ) return toDate( value );         if( java.sql.Time.class.isAssignableFrom( clazz ) ) return toTime( value );         if( java.sql.Timestamp.class.isAssignableFrom( clazz ) ) return toTimestamp( value );         if( java.util.Date.class.isAssignableFrom( clazz ) ) return toDateTime( value );                  return value;     }          /**      * Convert an Object to a DateTime, without an Exception      */     public static java.util.Date getDateTime( Object value )     {         try         {             return toDateTime( value );         }         catch( ParseException pe )         {             pe.printStackTrace();             return null;         }     }          /**      * Convert an Object to a DateTime.      */     public static java.util.Date toDateTime( Object value ) throws ParseException     {         if( value == null ) return null;                 if( value instanceof java.util.Date ) return (java.util.Date)value;         if( value instanceof String )         {             if( "".equals( (String)value ) ) return null;             return IN_DATETIME_FORMAT.parse( (String)value );         }                          return IN_DATETIME_FORMAT.parse( value.toString() );     }          /**      * Convert an Object to a Date, without an Exception      */     public static java.sql.Date getDate( Object value )     {         try         {             return toDate( value );         }         catch( ParseException pe )         {             pe.printStackTrace();             return null;         }     }     /**      * Convert an Object to a Date.      */     public static java.sql.Date toDate( Object value ) throws ParseException     {         if( value == null ) return null;                 if( value instanceof java.sql.Date ) return (java.sql.Date)value;         if( value instanceof String )         {             if( "".equals( (String)value ) ) return null;             return new java.sql.Date( IN_DATE_FORMAT.parse( (String)value ).getTime() );         }                          return new java.sql.Date( IN_DATE_FORMAT.parse( value.toString() ).getTime() );     }          /**      * Convert an Object to a Time, without an Exception      */     public static java.sql.Time getTime( Object value )     {         try         {             return toTime( value );         }         catch( ParseException pe )         {             pe.printStackTrace();             return null;         }     }          /**      * Convert an Object to a Time.      */     public static java.sql.Time toTime( Object value ) throws ParseException     {         if( value == null ) return null;                 if( value instanceof java.sql.Time ) return (java.sql.Time)value;         if( value instanceof String )         {             if( "".equals( (String)value ) ) return null;             return new java.sql.Time( IN_TIME_FORMAT.parse( (String)value ).getTime() );         }                          return new java.sql.Time( IN_TIME_FORMAT.parse( value.toString() ).getTime() );     }          /**      * Convert an Object to a Timestamp, without an Exception      */     public static java.sql.Timestamp getTimestamp( Object value )     {         try         {             return toTimestamp( value );         }         catch( ParseException pe )         {             pe.printStackTrace();             return null;         }     }     /**      * Convert an Object to a Timestamp.      */     public static java.sql.Timestamp toTimestamp( Object value ) throws ParseException     {         if( value == null ) return null;                 if( value instanceof java.sql.Timestamp ) return (java.sql.Timestamp)value;         if( value instanceof String )         {             if( "".equals( (String)value ) ) return null;             return new java.sql.Timestamp( IN_TIMESTAMP_FORMAT.parse( (String)value ).getTime() );         }                          return new java.sql.Timestamp( IN_TIMESTAMP_FORMAT.parse( value.toString() ).getTime() );     }          /**      * Tells you if the date part of a datetime is in a certain time range.      */     public static boolean isTimeInRange( java.sql.Time start, java.sql.Time end, java.util.Date d )     {         d=new java.sql.Time(d.getHours(),d.getMinutes(),d.getSeconds());                  if (start==null || end==null)         {             return false;         }                  if (start.before(end)&&(!(d.after(start)&&d.before(end))))         {             return false;         }                  if (end.before(start)&&(!(d.after(end)||d.before(start))))         {             return false;         }            return true;     }     public static  int getYear( Date date )     {         calendar.setTime( date );         return calendar.get( Calendar.YEAR );     }     public static int getMonth( Date date )     {         calendar.setTime( date );         return calendar.get( Calendar.MONTH );     }     public static int getDate( Date date )     {         calendar.setTime( date );         return calendar.get( Calendar.DATE );     }     public static int getHour( Date date )     {         calendar.setTime( date );         return calendar.get( Calendar.HOUR );     }     public static int getMinute( Date date )     {         calendar.setTime( date );         return calendar.get( Calendar.MINUTE );     }     public static int getSeconds( Date date )     {         calendar.setTime( date );         return calendar.get( Calendar.SECOND );     }     public static int getMillisecond( Date date )     {         calendar.setTime( date );         return calendar.get( Calendar.MILLISECOND );     }          /**      * Convert an Object to a String using Dates      */     public static String toString( Object date )     {         if( date == null ) return null;                  if( java.sql.Timestamp.class.isAssignableFrom( date.getClass() ) )         {             return OUT_TIMESTAMP_FORMAT.format( date );         }         if( java.sql.Time.class.isAssignableFrom( date.getClass() ) )         {             return OUT_TIME_FORMAT.format( date );         }         if( java.sql.Date.class.isAssignableFrom( date.getClass() ) )         {             return OUT_DATE_FORMAT.format( date );         }         if( java.util.Date.class.isAssignableFrom( date.getClass() ) )         {             return OUT_DATETIME_FORMAT.format( date );         }                  throw new IllegalArgumentException( "Unsupported type " + date.getClass() );     } }