Преобразовать строку типа «10 с» или «10 ч» в длительность - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь разобрать строки, как указано в заголовке «Продолжительность» или что-то подобное. Такие вещи, как Duration.parse(), не работают так, как я хочу, чтобы они работали.

Даны строки типа «10 с» или «10 ч». Мне нужно решение использовать эту строку и преобразовать ее в что-то вроде Duration или что-то подобное.

Редактировать: чтобы уточнить мои потребности: я не хочу использовать "Длительность- как "строки с" PTxxx ", и я не хочу анализировать эти строки самостоятельно. Где-то должно быть уже реализованное решение для этого imho.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

Вы проверили документацию ? Вот как вы можете использовать Duration.parse().

Примеры:

"PT20.345S" -- parses as "20.345 seconds"
"PT15M"     -- parses as "15 minutes" (where a minute is 60 seconds)
"PT10H"     -- parses as "10 hours" (where an hour is 3600 seconds)
"P2D"       -- parses as "2 days" (where a day is 24 hours or 86400 seconds)
"P2DT3H4M"  -- parses as "2 days, 3 hours and 4 minutes"
"P-6H3M"    -- parses as "-6 hours and +3 minutes"
"-P6H3M"    -- parses as "-6 hours and -3 minutes"
"-P-6H+3M"  -- parses as "+6 hours and -3 minutes"

Так что если вы хотите длительность 10 секунд, тогда Duration.parse("PT10S") или Duration.parse("PT10H") на 10 часов.

0 голосов
/ 02 апреля 2020

https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse - java .lang.CharSequence-

    Duration tenSec = Duration.parse("PT10s");
    Duration tenHours = Duration.parse("PT10h");
...