API Joda-Time (Java) не соответствует стандарту ISO 8601: ошибка или функция? - PullRequest
0 голосов
/ 22 декабря 2009

Согласно их веб-сайту, класс DUration реализует ISO 8601

http://en.wikipedia.org/wiki/ISO_8601#Durations

Но давайте посмотрим на пример. Это продолжительность 14 минут и 51 секунда. В ISO 8601 эти коды эквивалентны:

    System.out.println("bug "+new Duration("PT14M51S"));
     System.out.println("NO bug "+new Duration("PT891S");

PT14M51S - настоящая выдержка для базы данных postgresql и правильная. API joda-time просто конвертирует все в секунду, почему? Кажется, он не знает ничего другого, кроме ключевого письма S (the Y, M, D ...)

Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 23 декабря 2009

Вам нужно:

System.out.println("bug "+new Period("PT14M51S"));
0 голосов
/ 23 декабря 2011

Чтобы уточнить, Joda использует «Period» для обозначения того, что все остальные называют «Duration» (ISO и Oasis наверняка), и добавляет «Duration» для обозначения чего-то похожего, но отличающегося. Да, это действительно сбивает с толку.

...