Data Type Java

/**
 * Copyright (c) 2006 Richard Rodgers
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
//package com.monad.homerun.util;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
/**
 * TimeUtil is a utility class with static methods to convert times in various
 * formats into other formats
 */
public class TimeUtil {
  private static final int MINS_PER_DAY = 60 * 24;
  private static final long MS_PER_DAY = 1000 * 60 * MINS_PER_DAY;
  private static final int SEC = 1000;
  private static final int MIN = SEC * 60;
  private static final int HOUR = MIN * 60;
  private static final int DAY = HOUR * 24;
  private static final long WEEK = DAY * 7;
  private static final long YEAR = WEEK * 52;
  private static final long[] buckets = { YEAR, WEEK, DAY, HOUR, MIN, SEC };
  private static final String[] bucketNames = { "year", "week", "day",
      "hour", "minute", "second" };
  private static GregorianCalendar statFmtCal = new GregorianCalendar();
  private static final String ts24Pat = "H:mm:ss yy-MM-dd";
  // convert time to a sliding window format
  public static String windowFormat(long msecs) {
    Date tDate = new Date(msecs);
    long now = System.currentTimeMillis();
    long diff = now - msecs;
    // start with the last 24 hours
    long comp = MS_PER_DAY;
    // start comparing
    if (diff < comp) {
      // it's within the last 24 hours - just return the time
      DateFormat formatter = DateFormat.getTimeInstance(DateFormat.SHORT);
      return formatter.format(tDate);
    }
    // now expand to another day
    comp += MS_PER_DAY;
    if (diff < comp) {
      // it's within the last 48 hours - just return the time
      DateFormat formatter = DateFormat.getTimeInstance(DateFormat.SHORT);
      return "Yesterday " + formatter.format(tDate);
    }
    // now up it to a week
    comp += 5 * MS_PER_DAY;
    if (diff < comp) {
      // return the day of the week and the time
      // get time to be formatted into a calendar
      GregorianCalendar tCal = new GregorianCalendar();
      tCal.setTime(tDate);
      SimpleDateFormat formatter = new SimpleDateFormat("EEEE");
      return formatter.format(tDate);
    }
    // just return full date
    DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT,
        DateFormat.SHORT);
    return formatter.format(tDate);
  }
}