// Copyright (c) 2001 Dustin Sallings <dustin@spy.net> package net.spy.util; import java.util.Date; /** * Creates a representable timespan. */ public class TimeSpan extends Object { private long days=0; private long hours=0; private long minutes=0; private long seconds=0; private long mseconds=0; /** * Get an instance of TimeSpan representing the span between the given * from and to dates. */ public TimeSpan(Date from, Date to) { super(); long diff=Math.abs(to.getTime()-from.getTime()); /* if(diff<=0) { future=false; } */ // Days if(diff>86400000L) { days=diff/86400000L; diff=diff%86400000L; } // Hours if(diff>3600000L) { hours=diff/3600000L; diff=diff%3600000L; } // Minutes if(diff>60000L) { minutes=diff/60000L; diff=diff%60000L; } // Seconds if(diff>1000L) { seconds=diff/1000L; diff=diff%1000L; } mseconds=diff; } // Provide a two-digit number as a String. private String zeroNumber(long in) { return (in < 10 ? "0" : "") + in; } /** * Print out the timespan. */ @Override public String toString() { StringBuilder sb=new StringBuilder(64); boolean hasDays=false; if(days>0) { hasDays=true; sb.append(days); sb.append(days>1?" days":" day"); } if(hours>0 || minutes>0 || seconds>0 || mseconds>0) { if(hasDays) { sb.append(" "); } sb.append(zeroNumber(hours)); sb.append(":"); sb.append(zeroNumber(minutes)); sb.append(":"); sb.append(zeroNumber(seconds)); sb.append("."); sb.append(mseconds); } return(sb.toString()); } }