<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDevelopment%2FTiming</id>
		<title>Java Tutorial/Development/Timing - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDevelopment%2FTiming"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Development/Timing&amp;action=history"/>
		<updated>2026-04-10T16:10:47Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Development/Timing&amp;diff=3755&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Development/Timing&amp;diff=3755&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:44, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Development/Timing&amp;diff=3756&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Development/Timing&amp;diff=3756&amp;oldid=prev"/>
				<updated>2010-05-31T15:30:55Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Compute and display elapsed time of an operation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception{&lt;br /&gt;
    long startTime = System.currentTimeMillis();&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
        Thread.sleep(60);&lt;br /&gt;
    }&lt;br /&gt;
    long endTime = System.currentTimeMillis();&lt;br /&gt;
    float seconds = (endTime - startTime) / 1000F;&lt;br /&gt;
    System.out.println(Float.toString(seconds) + &amp;quot; seconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//0.625 seconds.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Convert milliseconds to readable string ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    GNU LESSER GENERAL PUBLIC LICENSE&lt;br /&gt;
    Copyright (C) 2006 The Lobo Project&lt;br /&gt;
    This library is free software; you can redistribute it and/or&lt;br /&gt;
    modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
    License as published by the Free Software Foundation; either&lt;br /&gt;
    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
    This library is distributed in the hope that it will be useful,&lt;br /&gt;
    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
    Lesser General Public License for more details.&lt;br /&gt;
    You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
    License along with this library; if not, write to the Free Software&lt;br /&gt;
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
    Contact info: lobochief@users.sourceforge.net&lt;br /&gt;
*/&lt;br /&gt;
public class Timing {&lt;br /&gt;
  public static double round1(double value) {&lt;br /&gt;
    return Math.round(value * 10.0) / 10.0;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static String getElapsedText(long elapsedMillis) {&lt;br /&gt;
    if(elapsedMillis &amp;lt; 60000) {&lt;br /&gt;
      double unit = round1(elapsedMillis / 1000.0); &lt;br /&gt;
      return unit + (unit == 1 ? &amp;quot; second&amp;quot; : &amp;quot; seconds&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else if(elapsedMillis &amp;lt; 60000 * 60) {&lt;br /&gt;
      double unit = round1(elapsedMillis / 60000.0); &lt;br /&gt;
      return unit + (unit == 1 ? &amp;quot; minute&amp;quot; : &amp;quot; minutes&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else if(elapsedMillis &amp;lt; 60000 * 60 * 24) {&lt;br /&gt;
      double unit = round1(elapsedMillis / (60000.0 * 60)); &lt;br /&gt;
      return unit + (unit == 1 ? &amp;quot; hour&amp;quot; : &amp;quot; hours&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      double unit = round1(elapsedMillis / (60000.0 * 60 * 24)); &lt;br /&gt;
      return unit + (unit == 1 ? &amp;quot; day&amp;quot; : &amp;quot; days&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get elapsed time in days ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    long start = System.currentTimeMillis();&lt;br /&gt;
    Thread.sleep(2000);&lt;br /&gt;
    // Get elapsed time in milliseconds&lt;br /&gt;
    long elapsedTimeMillis = System.currentTimeMillis() - start;&lt;br /&gt;
    float elapsedTimeDay = elapsedTimeMillis/(24*60*60*1000F);&lt;br /&gt;
    System.out.println(elapsedTimeDay);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get elapsed time in hours ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    long start = System.currentTimeMillis();&lt;br /&gt;
    Thread.sleep(2000);&lt;br /&gt;
    // Get elapsed time in milliseconds&lt;br /&gt;
    long elapsedTimeMillis = System.currentTimeMillis() - start;&lt;br /&gt;
    // Get elapsed time in hours&lt;br /&gt;
    float elapsedTimeHour = elapsedTimeMillis/(60*60*1000F);&lt;br /&gt;
    System.out.println(elapsedTimeHour);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get elapsed time in milliseconds ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    long start = System.currentTimeMillis();&lt;br /&gt;
    Thread.sleep(2000);&lt;br /&gt;
    // &lt;br /&gt;
    long elapsedTimeMillis = System.currentTimeMillis() - start;&lt;br /&gt;
    System.out.println(elapsedTimeMillis);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get elapsed time in minutes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    long start = System.currentTimeMillis();&lt;br /&gt;
    Thread.sleep(2000);&lt;br /&gt;
    // Get elapsed time in milliseconds&lt;br /&gt;
    long elapsedTimeMillis = System.currentTimeMillis() - start;&lt;br /&gt;
    // Get elapsed time in minutes&lt;br /&gt;
    float elapsedTimeMin = elapsedTimeMillis/(60*1000F);&lt;br /&gt;
    System.out.println(elapsedTimeMin);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get elapsed time in seconds ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    long start = System.currentTimeMillis();&lt;br /&gt;
    Thread.sleep(2000);&lt;br /&gt;
    // Get elapsed time in milliseconds&lt;br /&gt;
    long elapsedTimeMillis = System.currentTimeMillis() - start;&lt;br /&gt;
    // &lt;br /&gt;
    float elapsedTimeSec = elapsedTimeMillis/1000F;&lt;br /&gt;
    System.out.println(elapsedTimeSec);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get system time using System class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    long lnSystemTime = System.currentTimeMillis();&lt;br /&gt;
    System.out.println(&amp;quot;Milliseconds since midnight, January 1, 1970 UTC : &amp;quot; + lnSystemTime);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Returns a formatted String from time ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * $Revision: 10205 $&lt;br /&gt;
 * $Date: 2008-04-11 15:48:27 -0700 (Fri, 11 Apr 2008) $&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright (C) 2004-2008 Jive Software. All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * This software is published under the terms of the GNU Public License (GPL),&lt;br /&gt;
 * a copy of which is included in this distribution, or a commercial license&lt;br /&gt;
 * agreement with Jive.&lt;br /&gt;
 */&lt;br /&gt;
import java.io.UnsupportedEncodingException;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import java.text.BreakIterator;&lt;br /&gt;
import java.util.*;&lt;br /&gt;
import java.util.concurrent.ConcurrentHashMap;&lt;br /&gt;
/**&lt;br /&gt;
 * Utility class to peform common String manipulation algorithms.&lt;br /&gt;
 */&lt;br /&gt;
public class StringUtils {&lt;br /&gt;
    // Constants used by escapeHTMLTags&lt;br /&gt;
    private static final char[] QUOTE_ENCODE = &amp;quot;&amp;amp;quot;&amp;quot;.toCharArray();&lt;br /&gt;
    private static final char[] AMP_ENCODE = &amp;quot;&amp;amp;amp;&amp;quot;.toCharArray();&lt;br /&gt;
    private static final char[] LT_ENCODE = &amp;quot;&amp;amp;lt;&amp;quot;.toCharArray();&lt;br /&gt;
    private static final char[] GT_ENCODE = &amp;quot;&amp;amp;gt;&amp;quot;.toCharArray();&lt;br /&gt;
    private StringUtils() {&lt;br /&gt;
        // Not instantiable.&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Returns a formatted String from time.&lt;br /&gt;
     *&lt;br /&gt;
     * @param diff the amount of elapsed time.&lt;br /&gt;
     * @return the formatte String.&lt;br /&gt;
     */&lt;br /&gt;
    public static String getTimeFromLong(long diff) {&lt;br /&gt;
        final String HOURS = &amp;quot;h&amp;quot;;&lt;br /&gt;
        final String MINUTES = &amp;quot;min&amp;quot;;&lt;br /&gt;
        final String SECONDS = &amp;quot;sec&amp;quot;;&lt;br /&gt;
        final long MS_IN_A_DAY = 1000 * 60 * 60 * 24;&lt;br /&gt;
        final long MS_IN_AN_HOUR = 1000 * 60 * 60;&lt;br /&gt;
        final long MS_IN_A_MINUTE = 1000 * 60;&lt;br /&gt;
        final long MS_IN_A_SECOND = 1000;&lt;br /&gt;
        Date currentTime = new Date();&lt;br /&gt;
        long numDays = diff / MS_IN_A_DAY;&lt;br /&gt;
        diff = diff % MS_IN_A_DAY;&lt;br /&gt;
        long numHours = diff / MS_IN_AN_HOUR;&lt;br /&gt;
        diff = diff % MS_IN_AN_HOUR;&lt;br /&gt;
        long numMinutes = diff / MS_IN_A_MINUTE;&lt;br /&gt;
        diff = diff % MS_IN_A_MINUTE;&lt;br /&gt;
        long numSeconds = diff / MS_IN_A_SECOND;&lt;br /&gt;
        diff = diff % MS_IN_A_SECOND;&lt;br /&gt;
        long numMilliseconds = diff;&lt;br /&gt;
        StringBuffer buf = new StringBuffer();&lt;br /&gt;
        if (numHours &amp;gt; 0) {&lt;br /&gt;
            buf.append(numHours + &amp;quot; &amp;quot; + HOURS + &amp;quot;, &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if (numMinutes &amp;gt; 0) {&lt;br /&gt;
            buf.append(numMinutes + &amp;quot; &amp;quot; + MINUTES);&lt;br /&gt;
        }&lt;br /&gt;
        //buf.append(numSeconds + &amp;quot; &amp;quot; + SECONDS);&lt;br /&gt;
        String result = buf.toString();&lt;br /&gt;
        if (numMinutes &amp;lt; 1) {&lt;br /&gt;
            result = &amp;quot;&amp;lt; 1 minute&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        return result;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Returns a String in the format Xhrs, Ymins, Z sec, for the time difference between two times ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Licensed to the Apache Software Foundation (ASF) under one&lt;br /&gt;
 * or more contributor license agreements.  See the NOTICE file&lt;br /&gt;
 * distributed with this work for additional information&lt;br /&gt;
 * regarding copyright ownership.  The ASF licenses this file&lt;br /&gt;
 * to you under the Apache License, Version 2.0 (the&lt;br /&gt;
 * &amp;quot;License&amp;quot;); you may not use this file except in compliance&lt;br /&gt;
 * with the License.  You may obtain a copy of the License at&lt;br /&gt;
 *&lt;br /&gt;
 *     http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 *&lt;br /&gt;
 * Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 * See the License for the specific language governing permissions and&lt;br /&gt;
 * limitations under the License.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.io.StringWriter;&lt;br /&gt;
import java.net.InetAddress;&lt;br /&gt;
import java.net.URI;&lt;br /&gt;
import java.net.URISyntaxException;&lt;br /&gt;
import java.net.UnknownHostException;&lt;br /&gt;
import java.text.DateFormat;&lt;br /&gt;
import java.text.DecimalFormat;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.StringTokenizer;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * General string utils&lt;br /&gt;
 */&lt;br /&gt;
public class StringUtils {&lt;br /&gt;
  final public static char COMMA = &amp;quot;,&amp;quot;;&lt;br /&gt;
  final public static String COMMA_STR = &amp;quot;,&amp;quot;;&lt;br /&gt;
  final public static char ESCAPE_CHAR = &amp;quot;\\&amp;quot;;&lt;br /&gt;
  private static DecimalFormat oneDecimal = new DecimalFormat(&amp;quot;0.0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  /**&lt;br /&gt;
   * &lt;br /&gt;
   * Given a finish and start time in long milliseconds, returns a &lt;br /&gt;
   * String in the format Xhrs, Ymins, Z sec, for the time difference between two times. &lt;br /&gt;
   * If finish time comes before start time then negative valeus of X, Y and Z wil return. &lt;br /&gt;
   * &lt;br /&gt;
   * @param finishTime finish time&lt;br /&gt;
   * @param startTime start time&lt;br /&gt;
   */&lt;br /&gt;
  public static String formatTimeDiff(long finishTime, long startTime){&lt;br /&gt;
    StringBuffer buf = new StringBuffer();&lt;br /&gt;
    &lt;br /&gt;
    long timeDiff = finishTime - startTime; &lt;br /&gt;
    long hours = timeDiff / (60*60*1000);&lt;br /&gt;
    long rem = (timeDiff % (60*60*1000));&lt;br /&gt;
    long minutes =  rem / (60*1000);&lt;br /&gt;
    rem = rem % (60*1000);&lt;br /&gt;
    long seconds = rem / 1000;&lt;br /&gt;
    &lt;br /&gt;
    if (hours != 0){&lt;br /&gt;
      buf.append(hours);&lt;br /&gt;
      buf.append(&amp;quot;hrs, &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if (minutes != 0){&lt;br /&gt;
      buf.append(minutes);&lt;br /&gt;
      buf.append(&amp;quot;mins, &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    // return &amp;quot;0sec if no difference&lt;br /&gt;
    buf.append(seconds);&lt;br /&gt;
    buf.append(&amp;quot;sec&amp;quot;);&lt;br /&gt;
    return buf.toString(); &lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>