All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.dahuatech.hutool.core.date.TimeInterval Maven / Gradle / Ivy

package com.dahuatech.hutool.core.date;

import java.io.Serializable;

/**
 * 计时器
* 计算某个过程花费的时间,精确到毫秒 * * @author Looly */ public class TimeInterval implements Serializable { private static final long serialVersionUID = 1L; private long time; private boolean isNano; public TimeInterval() { this(false); } public TimeInterval(boolean isNano) { this.isNano = isNano; start(); } /** @return 开始计时并返回当前时间 */ public long start() { time = DateUtil.current(isNano); return time; } /** @return 重新计时并返回从开始到当前的持续时间 */ public long intervalRestart() { long now = DateUtil.current(isNano); long d = now - time; time = now; return d; } /** * 重新开始计算时间(重置开始时间) * * @return this * @since 3.0.1 */ public TimeInterval restart() { time = DateUtil.current(isNano); return this; } // ----------------------------------------------------------- Interval /** * 从开始到当前的间隔时间(毫秒数)
* 如果使用纳秒计时,返回纳秒差,否则返回毫秒差 * * @return 从开始到当前的间隔时间(毫秒数) */ public long interval() { return DateUtil.current(isNano) - time; } /** * 从开始到当前的间隔时间(毫秒数),返回XX天XX小时XX分XX秒XX毫秒 * * @return 从开始到当前的间隔时间(毫秒数) * @since 4.6.7 */ public String intervalPretty() { return DateUtil.formatBetween(intervalMs()); } /** * 从开始到当前的间隔时间(毫秒数) * * @return 从开始到当前的间隔时间(毫秒数) */ public long intervalMs() { return isNano ? interval() / 1000000L : interval(); } /** * 从开始到当前的间隔秒数,取绝对值 * * @return 从开始到当前的间隔秒数,取绝对值 */ public long intervalSecond() { return intervalMs() / DateUnit.SECOND.getMillis(); } /** * 从开始到当前的间隔分钟数,取绝对值 * * @return 从开始到当前的间隔分钟数,取绝对值 */ public long intervalMinute() { return intervalMs() / DateUnit.MINUTE.getMillis(); } /** * 从开始到当前的间隔小时数,取绝对值 * * @return 从开始到当前的间隔小时数,取绝对值 */ public long intervalHour() { return intervalMs() / DateUnit.HOUR.getMillis(); } /** * 从开始到当前的间隔天数,取绝对值 * * @return 从开始到当前的间隔天数,取绝对值 */ public long intervalDay() { return intervalMs() / DateUnit.DAY.getMillis(); } /** * 从开始到当前的间隔周数,取绝对值 * * @return 从开始到当前的间隔周数,取绝对值 */ public long intervalWeek() { return intervalMs() / DateUnit.WEEK.getMillis(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy