Java Tutorial/Development/Timing
Содержание
- 1 Compute and display elapsed time of an operation
- 2 Convert milliseconds to readable string
- 3 Get elapsed time in days
- 4 Get elapsed time in hours
- 5 Get elapsed time in milliseconds
- 6 Get elapsed time in minutes
- 7 Get elapsed time in seconds
- 8 Get system time using System class
- 9 Returns a formatted String from time
- 10 Returns a String in the format Xhrs, Ymins, Z sec, for the time difference between two times
Compute and display elapsed time of an operation
<source lang="java">
public class Main {
public static void main(String[] args) throws Exception{ long startTime = System.currentTimeMillis(); for (int i = 0; i < 10; i++) { Thread.sleep(60); } long endTime = System.currentTimeMillis(); float seconds = (endTime - startTime) / 1000F; System.out.println(Float.toString(seconds) + " seconds."); }
} //0.625 seconds.</source>
Convert milliseconds to readable string
<source lang="java">
/*
GNU LESSER GENERAL PUBLIC LICENSE Copyright (C) 2006 The Lobo Project This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Contact info: lobochief@users.sourceforge.net
- /
public class Timing {
public static double round1(double value) { return Math.round(value * 10.0) / 10.0; } public static String getElapsedText(long elapsedMillis) { if(elapsedMillis < 60000) { double unit = round1(elapsedMillis / 1000.0); return unit + (unit == 1 ? " second" : " seconds"); } else if(elapsedMillis < 60000 * 60) { double unit = round1(elapsedMillis / 60000.0); return unit + (unit == 1 ? " minute" : " minutes"); } else if(elapsedMillis < 60000 * 60 * 24) { double unit = round1(elapsedMillis / (60000.0 * 60)); return unit + (unit == 1 ? " hour" : " hours"); } else { double unit = round1(elapsedMillis / (60000.0 * 60 * 24)); return unit + (unit == 1 ? " day" : " days"); } }
}</source>
Get elapsed time in days
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { long start = System.currentTimeMillis(); Thread.sleep(2000); // Get elapsed time in milliseconds long elapsedTimeMillis = System.currentTimeMillis() - start; float elapsedTimeDay = elapsedTimeMillis/(24*60*60*1000F); System.out.println(elapsedTimeDay); }
}</source>
Get elapsed time in hours
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { long start = System.currentTimeMillis(); Thread.sleep(2000); // Get elapsed time in milliseconds long elapsedTimeMillis = System.currentTimeMillis() - start; // Get elapsed time in hours float elapsedTimeHour = elapsedTimeMillis/(60*60*1000F); System.out.println(elapsedTimeHour); }
}</source>
Get elapsed time in milliseconds
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { long start = System.currentTimeMillis(); Thread.sleep(2000); // long elapsedTimeMillis = System.currentTimeMillis() - start; System.out.println(elapsedTimeMillis); }
}</source>
Get elapsed time in minutes
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { long start = System.currentTimeMillis(); Thread.sleep(2000); // Get elapsed time in milliseconds long elapsedTimeMillis = System.currentTimeMillis() - start; // Get elapsed time in minutes float elapsedTimeMin = elapsedTimeMillis/(60*1000F); System.out.println(elapsedTimeMin); }
}</source>
Get elapsed time in seconds
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { long start = System.currentTimeMillis(); Thread.sleep(2000); // Get elapsed time in milliseconds long elapsedTimeMillis = System.currentTimeMillis() - start; // float elapsedTimeSec = elapsedTimeMillis/1000F; System.out.println(elapsedTimeSec); }
}</source>
Get system time using System class
<source lang="java">
public class Main {
public static void main(String[] args) { long lnSystemTime = System.currentTimeMillis(); System.out.println("Milliseconds since midnight, January 1, 1970 UTC : " + lnSystemTime); }
}</source>
Returns a formatted String from time
<source lang="java">
/**
* $Revision: 10205 $ * $Date: 2008-04-11 15:48:27 -0700 (Fri, 11 Apr 2008) $ * * Copyright (C) 2004-2008 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution, or a commercial license * agreement with Jive. */
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.BreakIterator; import java.util.*; import java.util.concurrent.ConcurrentHashMap; /**
* Utility class to peform common String manipulation algorithms. */
public class StringUtils {
// Constants used by escapeHTMLTags private static final char[] QUOTE_ENCODE = """.toCharArray(); private static final char[] AMP_ENCODE = "&".toCharArray(); private static final char[] LT_ENCODE = "<".toCharArray(); private static final char[] GT_ENCODE = ">".toCharArray(); private StringUtils() { // Not instantiable. } /** * Returns a formatted String from time. * * @param diff the amount of elapsed time. * @return the formatte String. */ public static String getTimeFromLong(long diff) { final String HOURS = "h"; final String MINUTES = "min"; final String SECONDS = "sec"; final long MS_IN_A_DAY = 1000 * 60 * 60 * 24; final long MS_IN_AN_HOUR = 1000 * 60 * 60; final long MS_IN_A_MINUTE = 1000 * 60; final long MS_IN_A_SECOND = 1000; Date currentTime = new Date(); long numDays = diff / MS_IN_A_DAY; diff = diff % MS_IN_A_DAY; long numHours = diff / MS_IN_AN_HOUR; diff = diff % MS_IN_AN_HOUR; long numMinutes = diff / MS_IN_A_MINUTE; diff = diff % MS_IN_A_MINUTE; long numSeconds = diff / MS_IN_A_SECOND; diff = diff % MS_IN_A_SECOND; long numMilliseconds = diff; StringBuffer buf = new StringBuffer(); if (numHours > 0) { buf.append(numHours + " " + HOURS + ", "); } if (numMinutes > 0) { buf.append(numMinutes + " " + MINUTES); } //buf.append(numSeconds + " " + SECONDS); String result = buf.toString(); if (numMinutes < 1) { result = "< 1 minute"; } return result; }
}</source>
Returns a String in the format Xhrs, Ymins, Z sec, for the time difference between two times
<source lang="java">
/**
* Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */
import java.io.PrintWriter; import java.io.StringWriter; import java.net.InetAddress; import java.net.URI; import java.net.URISyntaxException; import java.net.UnknownHostException; import java.text.DateFormat; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.StringTokenizer; import java.util.Collection;
/**
* General string utils */
public class StringUtils {
final public static char COMMA = ","; final public static String COMMA_STR = ","; final public static char ESCAPE_CHAR = "\\"; private static DecimalFormat oneDecimal = new DecimalFormat("0.0"); /** * * Given a finish and start time in long milliseconds, returns a * String in the format Xhrs, Ymins, Z sec, for the time difference between two times. * If finish time comes before start time then negative valeus of X, Y and Z wil return. * * @param finishTime finish time * @param startTime start time */ public static String formatTimeDiff(long finishTime, long startTime){ StringBuffer buf = new StringBuffer(); long timeDiff = finishTime - startTime; long hours = timeDiff / (60*60*1000); long rem = (timeDiff % (60*60*1000)); long minutes = rem / (60*1000); rem = rem % (60*1000); long seconds = rem / 1000; if (hours != 0){ buf.append(hours); buf.append("hrs, "); } if (minutes != 0){ buf.append(minutes); buf.append("mins, "); } // return "0sec if no difference buf.append(seconds); buf.append("sec"); return buf.toString(); }
}</source>