From e3105064024ff908134395b10a24fec4e90c4a9d Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 25 Mar 2020 14:32:38 -0400 Subject: [PATCH] Added time utilities. --- .../com/songoda/core/utils/TimeUtils.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Core/src/main/java/com/songoda/core/utils/TimeUtils.java diff --git a/Core/src/main/java/com/songoda/core/utils/TimeUtils.java b/Core/src/main/java/com/songoda/core/utils/TimeUtils.java new file mode 100644 index 00000000..22e8ae84 --- /dev/null +++ b/Core/src/main/java/com/songoda/core/utils/TimeUtils.java @@ -0,0 +1,58 @@ +package com.songoda.core.utils; + +import java.util.concurrent.TimeUnit; + +public class TimeUtils { + + public static String makeReadable(Long time) { + if (time == null) + return ""; + + StringBuilder sb = new StringBuilder(); + + long days = TimeUnit.MILLISECONDS.toDays(time); + long hours = TimeUnit.MILLISECONDS.toHours(time) - TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(time)); + long minutes = TimeUnit.MILLISECONDS.toMinutes(time) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(time)); + long seconds = TimeUnit.MILLISECONDS.toSeconds(time) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(time)); + + if (days != 0L) + sb.append(" ").append(days).append("d"); + if (hours != 0L) + sb.append(" ").append(hours).append("h"); + if (minutes != 0L) + sb.append(" ").append(minutes).append("m"); + if (seconds != 0L) + sb.append(" ").append(seconds).append("s"); + return sb.toString().trim(); + } + + + public static long parseTime(String input) { + long result = 0; + StringBuilder number = new StringBuilder(); + for (int i = 0; i < input.length(); i++) { + char c = input.charAt(i); + if (Character.isDigit(c)) { + number.append(c); + } else if (Character.isLetter(c) && (number.length() > 0)) { + result += convert(Integer.parseInt(number.toString()), c); + number = new StringBuilder(); + } + } + return result; + } + + private static long convert(long value, char unit) { + switch (unit) { + case 'd': + return value * 1000 * 60 * 60 * 24; + case 'h': + return value * 1000 * 60 * 60; + case 'm': + return value * 1000 * 60; + case 's': + return value * 1000; + } + return 0; + } +}