2016-09-09 2 views
2

Я пытаюсь разобрать ISO 8601 длительностью 1 месяц на объект Joda Duration. Можете ли вы помочь мне, почему эта строка кодаРазбор длительности ISO 8601 до продолжительности Joda - IllegalArgumentException

Duration duration = Duration.parse("P1M"); 

бросает

java.lang.IllegalArgumentException: Invalid format: "P1M" 
at org.joda.time.convert.StringConverter.getDurationMillis(StringConverter.java:111) 
at org.joda.time.base.BaseDuration.<init>(BaseDuration.java:105) 
at org.joda.time.Duration.<init>(Duration.java:209) 
at org.joda.time.Duration.parse(Duration.java:59) 

ответ

4

В этом случае она должна быть Period не Duration как это один месяц долго, так попробуйте вместо этого:

Period period = Period.parse("P1M"); 

действительно Duration должно быть выражено в точное количество миллисекунд и как месяц не может быть точно выражен в миллисекундах, поскольку он изменяется от одного месяца к другому, он не может быть Duration.

Более подробно о Period и Durationhere

1

Duration используется для представления на основе времени количество времени, как секунды и наносекунды.

Чтобы представить количество времени на основе данных, вы должны рассмотреть возможность использования Period.