如何转换javax.xml.datatype.Duration



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

谢谢。

一个简单直接的解决方案,没有外部库(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。

    public static Duration convertXmlTypeDuration(String input) throws DatatypeConfigurationException {
       // Duration duration =
       // DatatypeFactory.newInstance().newDuration("P2DT23H59M0S");
       Duration duration = DatatypeFactory.newInstance().newDuration(input);
       return duration;
}

您可以从持续时间中获得天,小时和分钟。

相关内容

最新更新