diff --git a/power-time/src/main/java/org/nanoboot/powerframework/time/duration/Duration.java b/power-time/src/main/java/org/nanoboot/powerframework/time/duration/Duration.java index 8487a4e..3ad1081 100644 --- a/power-time/src/main/java/org/nanoboot/powerframework/time/duration/Duration.java +++ b/power-time/src/main/java/org/nanoboot/powerframework/time/duration/Duration.java @@ -1,4 +1,3 @@ - /////////////////////////////////////////////////////////////////////////////////////////////// // power-framework: Java library with many purposes of usage. // Copyright (C) 2016-2022 the original author or authors. @@ -17,7 +16,6 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA /////////////////////////////////////////////////////////////////////////////////////////////// - package org.nanoboot.powerframework.time.duration; import org.nanoboot.powerframework.random.generators.RandomGenerator; @@ -133,7 +131,7 @@ public final class Duration { java.time.LocalDateTime javaLocalDateTime = universalDateTime.removeUniversalTimeZone().toJavaLocalDateTime(); java.time.Duration javaDuration = duration.toJavaDuration(); java.time.LocalDateTime newJavaLocalDateTime; - if(trueForAddingFalseForSubtracting) { + if (trueForAddingFalseForSubtracting) { newJavaLocalDateTime = javaLocalDateTime.plus(javaDuration); } else { newJavaLocalDateTime = javaLocalDateTime.minus(javaDuration); @@ -182,7 +180,7 @@ public final class Duration { boolean trueForAddingFalseForSubtracting) { UniversalDateTime universalDateTime = zonedDateTime.toUniversalDateTime(); UniversalDateTime newUniversalDateTime; - if(trueForAddingFalseForSubtracting) { + if (trueForAddingFalseForSubtracting) { newUniversalDateTime = fromUniversalDateTimePlusDurationCreateNewUniversalDateTime(universalDateTime, duration); } else { newUniversalDateTime = fromUniversalDateTimeMinusDurationCreateNewUniversalDateTime(universalDateTime, duration); @@ -276,8 +274,8 @@ public final class Duration { * @param string representing the new Duration */ public Duration(String string) { - String[] splitString = string.replace("\\.",":").split("\\:+"); - if(splitString.length != 5) { + String[] splitString = string.replace("\\.", ":").split("\\:+"); + if (splitString.length != 5) { throw new TimeException("Input String has wrong format."); } try { @@ -427,4 +425,27 @@ public final class Duration { DOT, String.format("%03d", get(TimeUnit.MILLISECOND))); } -} + + public String toHumanString() { + long days = get(TimeUnit.DAY); + long hours = get(TimeUnit.HOUR); + long minutes = get(TimeUnit.MINUTE); + long seconds = get(TimeUnit.SECOND); + long milliseconds = get(TimeUnit.MILLISECOND); + StringBuilder sb = new StringBuilder(); + if (!this.isPositive()) { + sb.append(MINUS).append(" "); + } + if (days > 0) { + sb.append(days).append(" ").append(TimeUnit.DAY.name().toLowerCase()).append((days > 1) ? "s" : "").append(" "); + } + if (hours > 0) { + sb.append(hours).append(" ").append(TimeUnit.HOUR.name().toLowerCase()).append((hours > 1) ? "s" : "").append(" "); + } + if (minutes > 0) { + sb.append(minutes).append(" ").append(TimeUnit.MINUTE.name().toLowerCase()).append((minutes > 1) ? "s" : "").append(" "); + } + sb.append(seconds).append(" ").append(TimeUnit.SECOND.name().toLowerCase()).append((seconds > 1) ? "s" : ""); + return sb.toString(); + } + }