2015-06-12 6 views
3

У меня есть ответ с сервера в javax.xml.datatype.Duration формат.
Это то, что я получаю
Путешествия Продолжительность = P2DT15H45M0S
и я хочу его в формате
требуется Формат = 2 дня 15 ч 45 мин
Как это сделать?
Есть ли способ для конвертировать из javax.xml.datatype.Duration в String.
Как преобразовать javax.xml.datatype.Duration

спасибо.

ответ

7

простое и прямолинейное решение без внешней библиотеки (нет встроенной продолжительности форматировщика в Java):

Duration dur = DatatypeFactory.newDuration("P2DT15H45M0S"); 
int days = dur.getDays(); 
int hours = dur.getHours(); 
int minutes = dur.getMinutes(); 

String formatted = days + " Days " + hours + " Hrs " + minutes + " Min" 

Если вы хотите, особые формы, такие как «День» в случае, если одна часть продолжительности равна 1, которая зависит от вас, чтобы добавить небольшое улучшение к этому коду. Возможно, вам также необходимо сначала нормализовать вашу продолжительность (например, если ваша вторая часть превышает 59), см. javadoc.

+0

Большое спасибо .... это работало как шарм ... Я новичок в stackoverflow, поэтому не могу повышать вас (ниже 15 баллов репутации), но это было потрясающе и заслуживает более 1000 upvotes. Спасибо – Yadvendra

+0

@Yadvendra С удовольствием помогла вам. Если вы хотите почитать этот ответ, вы можете просто принять его. –

+0

Спасибо .. Я действительно не знал, как принять либо ..; p еще одна вещь ... есть способ конвертировать итог в часы. Как если длительность = P2DT10H45M0S преобразованная строка = 58 часов 45 мин. Я думаю, что есть одно решение, я думаю, может работать. Продолжительность dur = DatatypeFactory.newDuration ("P2DT15H45M0S"); int days = dur.getDays(); int hours = dur.getHours(); int minutes = dur.getMinutes(); для (int i = 0; i <дней; i ++) { часов + = 24; } Спасибо в любом случае. – Yadvendra

0

Преобразовать javax.xml.datatype.Duration экземпляр в строку с помощью

duration.toString() 

затем следуют link. который поможет в правильном форматировании