Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * This program is free software; you can redistribute it and/or modify it under the 
   * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software 
   * Foundation.
   *
   * You should have received a copy of the GNU Lesser General Public License along with this 
   * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html 
   * or from the Free Software Foundation, Inc., 
   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * 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 Lesser General Public License for more details.
  *
  * Copyright 2008 Pentaho Corporation.  All rights reserved.
  */
 package org.pentaho.gwt.widgets.client.utils;
 
 import java.util.Date;
 import java.util.Map;
 
 
 import  com.google.gwt.i18n.client.DateTimeFormat;
 
 public class TimeUtil {
 
   private static final WidgetsLocalizedMessages MSGS = WidgetsLocalizedMessagesSingleton.getInstance().getMessages();
   public static final int HOURS_IN_DAY = 24;
 
   public static final int MINUTES_IN_HOUR = 60;
 
   public static final int SECONDS_IN_MINUTE = 60;
 
   public static final int MILLISECS_IN_SECONDS = 1000;
 
   public static final int MIN_HOUR = 0;
   public static final int MAX_HOUR = /2;
 
   public static final int MAX_MINUTE = 60;
   
   public static final int MAX_SECOND_BY_MILLISEC = . / ;
   public static final int MAX_MINUTE_BY_MILLISEC =  / ;
   public static final int MAX_HOUR_BY_MILLISEC =  / ;
 
   public enum TimeOfDay {
     AM(0, .am() ),
     PM(1, .pm() );
     
     TimeOfDay(int valueString name) {
       this. = value;
       this. = name;
     }
 
     private final int value;
 
     private final String name;
 
     private static TimeOfDay[] timeOfDay = { 
        
     };
 
     public int value() {
       return ;
     }
 
     public String toString() {
       return ;
     }
 
     public static TimeOfDay get(int idx) {
       return [idx];
     }
 
     public static int length() {
       return .;
     }    
     
     public static TimeOfDay stringToTimeOfDayString timeOfDay ) throws EnumException {
       for (TimeOfDay v : EnumSet.range(..)) {
         if ( v.toString().equalstimeOfDay ) ) {
           return v;
         }
       }
       throw new EnumException.invalidStringForTimeOfDaytimeOfDay ) );
     }
   } // end enum TimeOfDay
   
   public enum DayOfWeek {
     SUN(0, .sunday() ),
     MON(1, .monday() ),
     TUES(2, .tuesday() ),
     WED(3, .wednesday() ),
     THUR(4, .thursday() ),
     FRI(5, .friday() ), 
     SAT(6, .saturday() );
    DayOfWeek(int valueString name) {
      this. = value;
      this. = name;
    }
    private final int value;
    private final String name;
    private static DayOfWeek[] week = { 
       
    };
    public int value() {
      return ;
    }
    public String toString() {
      return ;
    }
    public static DayOfWeek get(int idx) {
      return [idx];
    }
    public static int length() {
      return .;
    }
  } /* end enum */
  public enum MonthOfYear {
    JAN(0, .january()), 
    FEB(1, .february()), 
    MAR(2, .march()), 
    APR(3, .april()), 
    MAY(4, .may()), 
    JUN(5, .june()), 
    JUL(6, .july()), 
    AUG(7, .august()), 
    SEPT(8, .september()), 
    OCT(9, .october()), 
    NOV(10, .november()), 
    DEC(11, .december());
    MonthOfYear(int valueString name) {
      this. = value;
      this. = name;
    }
    private final int value;
    private final String name;
    private static MonthOfYear[] year = { 
       
    };
    public int value() {
      return ;
    }
    public String toString() {
      return ;
    }
    public static MonthOfYear get(int idx) {
      return [idx];
    }
    public static int length() {
      return .;
    }
  } /* end enum */
  public enum WeekOfMonth {
    FIRST( 0, .first() ),
    SECOND( 1, .second() ),
    THIRD( 2, .third() ),
    FOURTH( 3, .fourth() ),
    LAST( 4, .last() );
    
    WeekOfMonthint valueString name ) {
      this. = value;
      this. = name;
    }
    private final int value;
    private final String name;
    private static WeekOfMonth[] week = { 
       
    };
    public int value() {
      return ;
    }
    public String toString() {
      return ;
    }
    public static WeekOfMonth get(int idx) {
      return [idx];
    }
    public static int length() {
      return .;
    }    
    
    public static WeekOfMonth stringToWeekOfMonthString weekOfMonth ) throws EnumException {
      for (WeekOfMonth v : EnumSet.range(..)) {
        if ( v.toString().equalsweekOfMonth ) ) {
          return v;
        }
      }
      throw new EnumException.invalidStringForWeekOfMonthweekOfMonth ) );
    }
  } // end enum WeekOfMonth
  private static Map<MonthOfYearIntegervalidNumDaysOfMonth = new HashMap<MonthOfYearInteger>();
  static {
  }
  
  private TimeUtil() {
  } // cannot create instance, static class
  public static long daysToSecs(long days) {
    return hoursToSecs(days * );
  }
  public static long hoursToSecs(long hours) {
    return minutesToSecs(hours * );
  }
  public static long minutesToSecs(long minutes) {
    return minutes * ;
  }
  public static long secsToMillisecs(long secs) {
    return secs * ;
  }
  public static long secsToDays(long secs) {
    return secs /  /  / ;
  }
  public static long secsToHours(long secs) {
    return secs /  / ;
  }
  public static long secsToMinutes(long secs) {
    return secs / ;
  }
  public static boolean isSecondsWholeDay(long secs) {
    return ( daysToSecssecsToDayssecs )) ) == secs;
  }
  public static boolean isSecondsWholeHour(long secs) {
    return ( hoursToSecssecsToHourssecs ) ) ) == secs;
  }
  public static boolean isSecondsWholeMinute(long secs) {
    return ( minutesToSecssecsToMinutessecs ) ) ) == secs;
  }
  
  
Time of day is element of {AM, PM}

Parameters:
hour
Returns:
  public static TimeOfDay getTimeOfDayBy0To23HourString hour ) {
    return Integer.parseInthour ) <  ? . : .;
  }
  
  
Convert a 24 hour time, where hours are 0-23, to a twelve hour time, where 0-23 maps to 0...11 AM and 0...11 PM

Parameters:
int0To23hour int integer in the range 0..23
Returns:
int integer in the range 0..11
  public static int to12HourClockint int0To23hour ) {
    assert int0To23hour >=0 && int0To23hour<=23 : "int0To23hour is out of range"//$NON-NLS-1$
    
    int int0To11 = int0To23hour < 
      ? int0To23hour
      : int0To23hour - ;
    return int0To11;
  }
  

Parameters:
time String it will look like: '17:17:00 PM' for 5:17 PM
  public static String to12HourClockString time ) {
    String[] parts = time.split":" ); //$NON-NLS-1$
    int hour = Integer.parseIntparts[0] );
    if ( hour >  ) {
      hour -= ;
    }
    if (hour == 0) {
      hour = ;
    }
    return Integer.toStringhour ) + ":" + parts[1] + ":" + parts[2];  //$NON-NLS-1$//$NON-NLS-2$
  }
  
  
map 0..11 to 12,1..11
  public static int map0Through11To12Through11int int0To11 ) {
    return int0To11 == 0 ? 12 : int0To11;
  }
  
  // NOTE: this method will produce rounding errors, since it doesn't round, it truncates
  public static long millsecondsToSecslong milliseconds ) {
    return milliseconds / ;
  }
  
TODO sbarkdull, gwt 1.5 has a DateTimeFormatter, change this method to use it. sample output: May 21, 2008 8:29:21 PM This is consistent with the formatter constructed like this: DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM, Locale.getDefault());
  public static String getDateTimeStringString monthString dayInMonthString year
      String hourString minuteString secondTimeOfDay timeOfDay ) {
    return new StringBuilder()
      .appendgetDateStringmonthdayInMonthyear ) )
      .append" " ) //$NON-NLS-1$
      .appendhour )
      .append":" ) //$NON-NLS-1$
      .appendminute )
      .append":" ) //$NON-NLS-1$
      .appendsecond )
      .append" " ) //$NON-NLS-1$
      .appendtimeOfDay.toString() ).toString();
  }
  // this code runs in a single thread, so it is ok to share these two DateTimeFormats
  private static DateTimeFormat dateFormatter = DateTimeFormat.getLongDateFormat();
  private static DateTimeFormat dateTimeFormatter = DateTimeFormat.getFormat( .dateFormatLongMedium() );
  
  public static Date getDateTimeString timeDate date ) {
    String strDate = .format( date );
    return .parse( strDate + " " + time ); //$NON-NLS-1$
  }
  
  

Parameters:
strDate String representing the date, in this format: MMM dd, yyyy HH:mm:ss a
Returns:
  public static Date getDateString strDate ) {
    return .parse( strDate );
  }
  
  
Get the time part of a date string.

Parameters:
dateTime String in this format: MMM dd, yyyy HH:mm:ss a
Returns:
String HH:mm:ss a
  public static String getTimePartString dateTime ) {
    String[] parts = dateTime.split"\\s" ); //$NON-NLS-1$
    //TODO sbarkdull, use StringBuilder
    return parts[3] + " " + parts[4]; //$NON-NLS-1$
  }

  
Get the time part of a date string.

Parameters:
dateTime Date
Returns:
String HH:mm:ss a
  public static String getTimePartDate dateTime ) {
    String strDateTime = .format( dateTime );
    return to12HourClockgetTimePartstrDateTime ) );
  }
  
Get the time part of a date string.

Parameters:
dateTime String in this format: MMM dd, yyyy HH:mm:ss a
Returns:
String HH:mm:ss a
  public static String getDatePartString dateTime ) {
    String[] parts = dateTime.split"\\s" ); //$NON-NLS-1$
    //TODO sbarkdull, use StringBuilder
    return parts[0] + " " + parts[1] + " " + parts[2]; //$NON-NLS-1$ //$NON-NLS-2$
  }
  
  public static String get0thTime() {
    //TODO sbarkdull, use StringBuilder
    return "12:00:00 " + ..toString(); //$NON-NLS-1$
  }
  
  public static String zeroTimePartString dateTime ) {
    //TODO sbarkdull, use StringBuilder
    return getDatePartdateTime ) + " " + get0thTime(); //$NON-NLS-1$
  }
  
  public static Date zeroTimePartDate dateTime ) {
    //TODO sbarkdull, use StringBuilder
    return getDateTimeget0thTime(), dateTime );
  }
  
  
TODO sbarkdull, gwt 1.5 has a DateTimeFormatter, change this method to use it. sample output: May 21, 2008 This is consistent with the formatter constructed like this: DateFormat formatter = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault());
  public static String getDateStringString monthString dayInMonthString year ) {
    return new StringBuilder()
      .appendmonth )
      .append" " ) //$NON-NLS-1$
      .appenddayInMonth )
      .append", " ) //$NON-NLS-1$
      .appendyear ).toString();
  }
  public static boolean isValidNumOfDaysForMonth(int numDaysMonthOfYear month) {
    if (numDays < 1) {
      return false;
    } else {
      return .get(month) <= numDays;
    }
  }
  
  
Is <param>num</param> between <param>low</param> and <param>high</param>, inclusive.

Parameters:
low
num
high
Returns:
boolean true if <param>num</param> between <param>low</param> and <param>high</param>, inclusive, else false.
  private static boolean isNumBetweenlong lowlong numlong high ) {
    return num >= low && num <= high;
  }
  
  public static boolean isDayOfMonthint num ) {
    return isNumBetween( 1, num, 31 );
  }
  
  public static boolean isDayOfWeekint num ) {
    return isNumBetween( 1, num, 7 );
  }
  
  public static boolean isWeekOfMonthint num ) {
    return isNumBetween( 1, num, 4 );
  }
  
  public static boolean isMonthOfYearint num ) {
    return isNumBetween( 1, num, 12 );
  }
  
  public static boolean isSecondint num ) {
    return isNumBetween( 0, num, 59 );
  }
  
  public static boolean isMinuteint num ) {
    return isNumBetween( 0, num, 59 );
  }
  
  public static boolean isHourint num ) {
    return isNumBetween( 0, num, 23 );
  }
  
//  private static final String MATCH_DATE_STRING_RE = "^[0-9]{1,2}$";
//  public boolean isDateStr( String strInt ) {
//    return MATCH_DATE_STRING_RE.matches( strInt );
//  }
  
  public static void mainString[] args ) {
    assert daysToSecs( 13 ) == 1123200: ""//$NON-NLS-1$
    assert daysToSecs( 13 ) != 1123201 : ""//$NON-NLS-1$
    assert daysToSecs( 13 ) != 1123199 : ""//$NON-NLS-1$
    
    assert hoursToSecs( 13 ) == 46800: ""//$NON-NLS-1$
    assert hoursToSecs( 13 ) != 46801 : ""//$NON-NLS-1$
    assert hoursToSecs( 13 ) != 46799 : ""//$NON-NLS-1$
    
    assert minutesToSecs( 13 ) == 780: ""//$NON-NLS-1$
    assert minutesToSecs( 13 ) != 781 : ""//$NON-NLS-1$
    assert minutesToSecs( 13 ) != 779 : ""//$NON-NLS-1$
    
    assert secsToDays( 1123200 ) == 13 : ""//$NON-NLS-1$
    assert secsToDays( 1123201 ) != 13 : ""//$NON-NLS-1$
    assert secsToDays( 1123199 ) != 13 : ""//$NON-NLS-1$
    
    assert secsToHours( 46800 ) == 13 : ""//$NON-NLS-1$
    assert secsToHours( 46801 ) != 13 : ""//$NON-NLS-1$
    assert secsToHours( 46799 ) != 13 : ""//$NON-NLS-1$
    
    assert secsToMinutes( 780 ) == 13 : ""//$NON-NLS-1$
    assert secsToMinutes( 781 ) != 13 : ""//$NON-NLS-1$
    assert secsToMinutes( 779 ) != 13 : ""//$NON-NLS-1$
    
    assert isSecondsWholeDay( 1123200 ) : ""//$NON-NLS-1$
    assert !isSecondsWholeDay( 1123201 ) : ""//$NON-NLS-1$
    assert !isSecondsWholeDay( 1123199 ) : ""//$NON-NLS-1$
    
    assert isSecondsWholeHour( 46800 ) : ""//$NON-NLS-1$
    assert !isSecondsWholeHour( 46801 ) : ""//$NON-NLS-1$
    assert !isSecondsWholeHour( 46799 ) : ""//$NON-NLS-1$
    
    assert isSecondsWholeMinute( 780 ) : ""//$NON-NLS-1$
    assert !isSecondsWholeMinute( 781 ) : ""//$NON-NLS-1$
    assert !isSecondsWholeMinute( 779 ) : ""//$NON-NLS-1$
    assert getTimeOfDayBy0To23Hour"0" ) == . : "hour 0 is AM"//$NON-NLS-1$ //$NON-NLS-2$
    assert getTimeOfDayBy0To23Hour"11" ) == . : "hour 11 is AM"//$NON-NLS-1$ //$NON-NLS-2$
    assert getTimeOfDayBy0To23Hour"12" ) == ."hour 12 is PM"//$NON-NLS-1$ //$NON-NLS-2$
    assert getTimeOfDayBy0To23Hour"13" ) == . : "hour 13 is PM"//$NON-NLS-1$ //$NON-NLS-2$
    assert getTimeOfDayBy0To23Hour"23" ) == . : "hour 23 is PM"//$NON-NLS-1$ //$NON-NLS-2$
    assert to12HourClock( 0 )==( 1 ) : "0 is 1"//$NON-NLS-1$
    assert to12HourClock( 11 )==( 12 ) : "11 is 12"//$NON-NLS-1$
    assert to12HourClock( 12 )==( 1 ) : "12 is 1"//$NON-NLS-1$
    assert to12HourClock( 23 )==( 11 ) : "23 is 11"//$NON-NLS-1$
    
    ..println"done" ); //$NON-NLS-1$
  }
New to GrepCode? Check out our FAQ X