package os.system.digest.domain.basic;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
public class TimeMillis {
public static long getCurrent(long start) {
return System.currentTimeMillis() - start;
}
public static Integer getCurrentMS(long start) {
return (int) ((System.currentTimeMillis() - start)/1000/60);
}
public static long getUseTime(Instant now) {
return ChronoUnit.NANOS.between(now, Instant.now());
}
}
package os.system.digest.domain.basic;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import os.system.digest.factory.service.TargetFactoryService;
public abstract class Product<T extends Object> {
public final static String ps = "ps";
public final static String ns = "ns";
public final static String us = "μs";
public final static String ms = "ms";
public final static String s = "s";
public Instant start;
public Instant end;
public long time;
public abstract T builder();
public final void sleep(int ms) throws InterruptedException {
Thread.sleep(ms);
}
public final void start() {
this.start = Instant.now();
}
public final void end() {
this.end = Instant.now();
}
public final String getNano() {
return (this.end.getNano() - this.start.getNano()) + Product.ns;
}
public final String getMicros() {
return parseThousandthPercentile(getNano()) + Product.us;
}
public final String getMillis() {
return parseThousandthPercentile(parseThousandthPercentile(getNano())) + Product.ms;
}
public final String getEpochSecond() {
return (this.end.getEpochSecond() - this.start.getEpochSecond()) + Product.s;
}
public final long calc() {
if(this.start != null)
return 0;
this.time = ChronoUnit.MILLIS.between(this.start, this.end);
this.time = Duration.between(start, end).toMillis();
return this.time;
}
private final Integer getDuration(Date lastTime, Date nextTime){
long s = (nextTime.getTime() - lastTime.getTime())/1000;
return Integer.parseInt(String.valueOf(s/60));
}
public final String parseThousandthPercentile(String number){
String res;
number = parseNumber(number);
if (number.contains(".")) {
int index = number.lastIndexOf(".");
String[] data = number.split("\\.");
res = data[0].substring(0, index - 3) + "." + data[0].substring(index - 3);
} else {
res = number.substring(0, number.length()-3) + "." + number.substring(number.length()-3);
}
return res;
}
public final String parseNumber(String number) {
char[] array = number.toCharArray();
StringBuilder stringBuilder = new StringBuilder();
for(char c: array) {
if('0' == c
|| '1' == c
|| '2' == c
|| '3' == c
|| '4' == c
|| '5' == c
|| '6' == c
|| '7' == c
|| '8' == c
|| '9' == c
|| '.' == c) {
stringBuilder.append(c);
}
}
return stringBuilder.toString();
}
}