4

我有来自服务器的javax.xml.datatype.Duration格式的响应。
这就是我得到的
旅行持续时间 = P2DT15H45M0S
,我希望它采用
所需格式 = 2 天 15 小时 45分钟
怎么做?
有没有办法从 javax.xml.datatype.Duration 转换为 String

谢谢你。

4

3 回答 3

9

一个没有外部库的简单直接的解决方案(Java 中没有内置的持续时间格式化程序):

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

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

如果您想要像“Day”这样的单数形式,以防一个持续时间部分正好等于 1,那么您可以为此代码添加一个小的增强功能。也许您还需要首先标准化您的持续时间(例如,如果您的第二部分超过 59),请参阅javadoc

于 2015-06-12T11:42:44.860 回答
1
    public static Duration convertXmlTypeDuration(String input) throws DatatypeConfigurationException {
       // Duration duration =
       // DatatypeFactory.newInstance().newDuration("P2DT23H59M0S");
       Duration duration = DatatypeFactory.newInstance().newDuration(input);
       return duration;
}

您可以从持续时间中获取天数、小时数和分钟数。

于 2019-02-11T12:09:26.843 回答
-1

将 javax.xml.datatype.Duration 实例转换为字符串

duration.toString()

然后按照链接。这将有助于正确格式化

于 2015-06-12T10:32:02.500 回答