ShowControl/src/main/java/nl/sbdeveloper/showapi/utils/TimeUtil.java
2021-01-22 20:46:24 +01:00

75 lines
2.4 KiB
Java

package nl.sbdeveloper.showapi.utils;
import java.time.LocalTime;
import java.time.format.DateTimeParseException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TimeUtil {
private static final int s = 1000;
private static final int m = s * 60;
private static final int h = m * 60;
private static final int d = h * 24;
private static final int w = d * 7;
private static final int y = (int)(d * 365.25);
public static String showTime(int seconds) {
LocalTime timeOfDay = LocalTime.ofSecondOfDay(seconds / 20);
return timeOfDay.toString();
}
public static int parseTicks(String str) {
try {
LocalTime localTime = LocalTime.parse(str);
return localTime.toSecondOfDay();
} catch (DateTimeParseException ex) {
Pattern pattern = Pattern.compile("^(-?(?:\\d+)?\\.?\\d+) *(ticks?|tick?|t|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$");
Matcher matcher = pattern.matcher(str);
if (!matcher.find()) return 0;
float n = Float.parseFloat(matcher.group(1));
switch (matcher.group(2).toLowerCase()) {
case "years":
case "year":
case "yrs":
case "yr":
case "y":
return (int)(n * y) / 20000;
case "weeks":
case "week":
case "w":
return (int)(n * w) / 20000;
case "days":
case "day":
case "d":
return (int)(n * d) / 20000;
case "hours":
case "hour":
case "hrs":
case "hr":
case "h":
return (int)(n * h) / 20000;
case "minutes":
case "minute":
case "mins":
case "min":
case "m":
return (int)(n * m) / 20000;
case "seconds":
case "second":
case "secs":
case "sec":
case "s":
return (int)(n * s) / 20000;
case "ticks":
case "tick":
case "ts":
case "t":
return (int) n / 20000;
default:
return 0;
}
}
}
}