fork(1) download
  1. import java.time.Duration;
  2. import java.util.stream.Stream;
  3.  
  4. public class Main {
  5. public static void main(String[] args) {
  6. // Test
  7. Stream.of(
  8. "30min",
  9. "2h 15min",
  10. "2d 15h 30min",
  11. "30sec",
  12. "2h 15min 10sec",
  13. "2day 15hour 30min",
  14. "2 days 15 hours 30 mins",
  15. "2 Days 15 Hours 30 Minutes",
  16. "2days 15hrs 30mins",
  17. "2 Hours 15 Minutes 10 Seconds"
  18. ).forEach(s -> System.out.println(s + " => " + toMillis(s) + "ms"));
  19. }
  20.  
  21. static long toMillis(String strDuration) {
  22. strDuration = strDuration.toUpperCase()
  23. .replaceAll("\\s+", "")
  24. .replaceAll("DAYS?", "D")
  25. .replaceAll("(?:HOURS?)|(?:HRS?)", "H")
  26. .replaceAll("(?:MINUTES?)|(?:MINS?)", "M")
  27. .replaceAll("(?:SECONDS?)|(?:SECS?)", "S")
  28. .replaceAll("(\\d+D)", "P$1T");
  29. strDuration = strDuration.charAt(0) != 'P' ? "PT" + strDuration : strDuration;
  30. // System.out.println(strDuration);
  31. Duration duration = Duration.parse(strDuration);
  32. return duration.toMillis();
  33. }
  34. }
Success #stdin #stdout 0.21s 58920KB
stdin
Standard input is empty
stdout
30min => 1800000ms
2h 15min => 8100000ms
2d 15h 30min => 228600000ms
30sec => 30000ms
2h 15min 10sec => 8110000ms
2day 15hour 30min => 228600000ms
2 days 15 hours 30 mins => 228600000ms
2 Days 15 Hours 30 Minutes => 228600000ms
2days 15hrs 30mins => 228600000ms
2 Hours 15 Minutes 10 Seconds => 8110000ms