import java.time.Duration;
import java.util.stream.Stream;
public class Main {
public static void main
(String[] args
) { // Test
Stream.of(
"30min",
"2h 15min",
"2d 15h 30min",
"30sec",
"2h 15min 10sec",
"2day 15hour 30min",
"2 days 15 hours 30 mins",
"2 Days 15 Hours 30 Minutes",
"2days 15hrs 30mins",
"2 Hours 15 Minutes 10 Seconds"
).
forEach(s
-> System.
out.
println(s
+ " => " + toMillis
(s
) + "ms")); }
static long toMillis
(String strDuration
) { strDuration = strDuration.toUpperCase()
.replaceAll("\\s+", "")
.replaceAll("DAYS?", "D")
.replaceAll("(?:HOURS?)|(?:HRS?)", "H")
.replaceAll("(?:MINUTES?)|(?:MINS?)", "M")
.replaceAll("(?:SECONDS?)|(?:SECS?)", "S")
.replaceAll("(\\d+D)", "P$1T");
strDuration = strDuration.charAt(0) != 'P' ? "PT" + strDuration : strDuration;
// System.out.println(strDuration);
Duration duration = Duration.parse(strDuration);
return duration.toMillis();
}
}
aW1wb3J0IGphdmEudGltZS5EdXJhdGlvbjsKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uU3RyZWFtOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIC8vIFRlc3QKICAgICAgICBTdHJlYW0ub2YoCiAgICAgICAgICAgICAgICAiMzBtaW4iLAogICAgICAgICAgICAgICAgIjJoIDE1bWluIiwKICAgICAgICAgICAgICAgICIyZCAxNWggMzBtaW4iLAogICAgICAgICAgICAgICAgIjMwc2VjIiwKICAgICAgICAgICAgICAgICIyaCAxNW1pbiAxMHNlYyIsCiAgICAgICAgICAgICAgICAiMmRheSAxNWhvdXIgMzBtaW4iLAogICAgICAgICAgICAgICAgIjIgZGF5cyAxNSBob3VycyAzMCBtaW5zIiwKICAgICAgICAgICAgICAgICIyIERheXMgMTUgSG91cnMgMzAgTWludXRlcyIsCiAgICAgICAgICAgICAgICAiMmRheXMgMTVocnMgMzBtaW5zIiwKICAgICAgICAgICAgICAgICIyIEhvdXJzIDE1IE1pbnV0ZXMgMTAgU2Vjb25kcyIKICAgICAgICApLmZvckVhY2gocyAtPiBTeXN0ZW0ub3V0LnByaW50bG4ocyArICIgPT4gIiArIHRvTWlsbGlzKHMpICsgIm1zIikpOwogICAgfQoKICAgIHN0YXRpYyBsb25nIHRvTWlsbGlzKFN0cmluZyBzdHJEdXJhdGlvbikgewogICAgICAgIHN0ckR1cmF0aW9uID0gc3RyRHVyYXRpb24udG9VcHBlckNhc2UoKQogICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoIlxccysiLCAiIikKICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKCJEQVlTPyIsICJEIikKICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKCIoPzpIT1VSUz8pfCg/OkhSUz8pIiwgIkgiKQogICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoIig/Ok1JTlVURVM/KXwoPzpNSU5TPykiLCAiTSIpCiAgICAgICAgICAgICAgICAucmVwbGFjZUFsbCgiKD86U0VDT05EUz8pfCg/OlNFQ1M/KSIsICJTIikKICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKCIoXFxkK0QpIiwgIlAkMVQiKTsKICAgICAgICBzdHJEdXJhdGlvbiA9IHN0ckR1cmF0aW9uLmNoYXJBdCgwKSAhPSAnUCcgPyAiUFQiICsgc3RyRHVyYXRpb24gOiBzdHJEdXJhdGlvbjsKICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oc3RyRHVyYXRpb24pOwogICAgICAgIER1cmF0aW9uIGR1cmF0aW9uID0gRHVyYXRpb24ucGFyc2Uoc3RyRHVyYXRpb24pOwogICAgICAgIHJldHVybiBkdXJhdGlvbi50b01pbGxpcygpOwogICAgfQp9