Uptime.java

_Pete_ 09.11.04 10:49

Kahden ajan välinen erotus toisistaan

 Tekstiversio  Arvo: 1 (5 ääntä)  Äänestä: +  -
/*
 * COPYRIGHT 2004 Petri Airio
 *
 * All rights reserved.
 *
 * $Id: Uptime.java,v 1.4 2004/09/27 19:41:59 pete Exp $
 */

package com.freakz.hokan.common;

import java.util.Calendar;
import java.util.Date;

/**
 * Calculates time difference between two time objects.
 * This time is usually nor often called uptime.
 * <p/>
 * $Revision: 1.4 $
 *
 * @author Petri Airio
 */


public class Uptime {

//~ Instance/static variables ..............................................

  private long _time;


//~ Constructors ...........................................................

  public Uptime() {
    _time = new Date().getTime();
  }

  public Uptime(Calendar cal) {
    this(cal.getTime());
  }

  public Uptime(Date d) {
    this(d.getTime());
  }

  /**
   * startup time. uptime is calculated against this time.
   */

  public Uptime(long time) {
    _time = time;
    //    System.out.println("Target time: " + new Date(time) +
    //       " (" + _time + ")");
  }

  //~ Methods ................................................................

  public Long[] getTimeDiff() {
    return getTimeDiff(new Date().getTime());
  }

  public Long[] getTimeDiff(Calendar cal) {
    return getTimeDiff(cal.getTime());
  }

  public Long[] getTimeDiff(Date d) {
    return getTimeDiff(d.getTime());
  }

  /**
   *
   */

  public Long[] getTimeDiff(long time2) {
    long utime = Math.abs(_time - time2);
    System.out.println("--> " + time2 + " --> " + utime);
    if (utime == 0) {
      return new Long[]{new Long(0), new Long(0), new Long(0), new Long(0)};
    }

    long ut_secs = utime / 1000;

    long dd = ut_secs / (60 * 60 * 24);
    long hh = (ut_secs / (60 * 60)) - (dd * 24);
    long mm = (ut_secs / 60) - (dd * 1440) - (hh * 60);
    long ss = ut_secs - (dd * 24 * 60 * 60) - (hh * 60 * 60) - (mm * 60);

    Long[] ret = new Long[4];
    ret[0] = new Long(ss);
    ret[1] = new Long(mm);
    ret[2] = new Long(hh);
    ret[3] = new Long(dd);

    return ret;
  }

}

harja 10:51 9.11.04 
Tuotanoin... Mikäs ihmeen vika on java.utill.Calendarin tarjoamilla palveluilla? sieltähän löytyy näppärästi add()-metodi jolla tuo nyt käy ilman moista kikkailua. Käytetään sitä luokkakirjastoa, kun siellä on valmiina kaikki tällaiset :-)
_Pete_ 11:53 10.11.04 
mikefast kirjoitti:
Tuotanoin... Mikäs ihmeen vika on java.utill.Calendarin tarjoamilla palveluilla? sieltähän löytyy näppärästi add()-metodi jolla tuo nyt käy ilman moista kikkailua. Käytetään sitä luokkakirjastoa, kun siellä on valmiina kaikki tällaiset :-)


add

public abstract void add(int field,
int amount)
Adds or subtracts the specified amount of time to the given calendar field, based on the calendar's rules. For example, to subtract 5 days from the current time of the calendar, you can achieve it by calling:

add(Calendar.DAY_OF_MONTH, -5).

Parameters:
field - the calendar field.
amount - the amount of date or time to be added to the field.
See Also:
roll(int,int), set(int,int)


Laitatko vielä esimerkin, miten tuolla saa tehtyä saman eli eroteltua kahden eri aikaleiman eron päivinä, tunteina, minuutteina ja sekunteina.