DateUtils Class

package javaxt.express.utils;
import java.util.*;

//******************************************************************************
//**  Date Utils
//******************************************************************************
/**
 *   Provides static methods
 *
 ******************************************************************************/

public class DateUtils {


    private static final String z = "GMT";
    private static final TimeZone tz = TimeZone.getTimeZone(z);
    private static final TimeZone utc = javaxt.utils.Date.getTimeZone("utc");
    private final static long  jvm_diff;
    static {
        jvm_diff = System.currentTimeMillis()*1000_000-System.nanoTime();
    }


  //**************************************************************************
  //** getCurrentTime
  //**************************************************************************
  /** Returns current time in nanoseconds
   */
    public static long getCurrentTime(){
        return System.nanoTime()+jvm_diff;
    }


  //**************************************************************************
  //** getMilliseconds
  //**************************************************************************
  /** Converts a timestamp in nanoseconds to milliseconds
   */
    public static long getMilliseconds(long nanoseconds){
        return nanoseconds / 1000000;
    }


  //**************************************************************************
  //** getUTC
  //**************************************************************************
    public static TimeZone getUTC(){
        return utc;
    }


  //**************************************************************************
  //** getDate
  //**************************************************************************
  /** Used to convert a UNIX timestamp in milliseconds to a string in GMT (e.g.
   *  "Mon, 20 Feb 2012 13:04:28 GMT"). Note that this method does not rely on
   *  the java.text.SimpleDateFormat for performance reasons.
   *  @param milliseconds Milliseconds since January 1, 1970, 00:00:00 UTC
   */
    public static String getDate(long milliseconds){
        java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.setTimeInMillis(milliseconds);
        return getDate(cal);
    }

    private static String getDate(Calendar cal){

        if (!cal.getTimeZone().equals(tz)){
            cal = (java.util.Calendar) cal.clone();
            cal.setTimeZone(tz);
        }

        StringBuffer str = new StringBuffer(29);
        switch(cal.get(Calendar.DAY_OF_WEEK)){
            case Calendar.MONDAY:    str.append("Mon, "); break;
            case Calendar.TUESDAY:   str.append("Tue, "); break;
            case Calendar.WEDNESDAY: str.append("Wed, "); break;
            case Calendar.THURSDAY:  str.append("Thu, "); break;
            case Calendar.FRIDAY:    str.append("Fri, "); break;
            case Calendar.SATURDAY:  str.append("Sat, "); break;
            case Calendar.SUNDAY:    str.append("Sun, "); break;
        }

        int i = cal.get(Calendar.DAY_OF_MONTH);
        str.append(i<10 ? "0"+i : i);

        switch (cal.get(Calendar.MONTH)) {
            case Calendar.JANUARY:   str.append(" Jan "); break;
            case Calendar.FEBRUARY:  str.append(" Feb "); break;
            case Calendar.MARCH:     str.append(" Mar "); break;
            case Calendar.APRIL:     str.append(" Apr "); break;
            case Calendar.MAY:       str.append(" May "); break;
            case Calendar.JUNE:      str.append(" Jun "); break;
            case Calendar.JULY:      str.append(" Jul "); break;
            case Calendar.AUGUST:    str.append(" Aug "); break;
            case Calendar.SEPTEMBER: str.append(" Sep "); break;
            case Calendar.OCTOBER:   str.append(" Oct "); break;
            case Calendar.NOVEMBER:  str.append(" Nov "); break;
            case Calendar.DECEMBER:  str.append(" Dec "); break;
        }

        str.append(cal.get(Calendar.YEAR));
        str.append(" ");

        i = cal.get(Calendar.HOUR_OF_DAY);
        str.append(i<10 ? "0"+i+":" : i+":");

        i = cal.get(Calendar.MINUTE);
        str.append(i<10 ? "0"+i+":" : i+":");

        i = cal.get(Calendar.SECOND);
        str.append(i<10 ? "0"+i+" " : i+" ");

        str.append(z);
        return str.toString();

        //new java.text.SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
        //return f.format(date);
    }
}