【问题标题】:how to convert javax.xml.datatype.Duration如何转换 javax.xml.datatype.Duration
【发布时间】:2015-08-28 07:01:05
【问题描述】:

我收到了来自服务器的 javax.xml.datatype.Duration 格式的响应。
这就是我得到的
行程时间 = P2DT15H45M0S
我想要它的格式
所需格式 = 2 天 15 小时 45 分钟
如何做到这一点?
有什么方法可以从 javax.xml.datatype.Duration 转换为 String

谢谢。

【问题讨论】:

    标签: java string duration reformat


    【解决方案1】:

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

    【讨论】:

    • 非常感谢......这就像魅力......我是stackoverflow的新手,所以不能给你投票(低于15个声望点)但这太棒了,值得超过1000个投票。谢谢
    • @Yadvendra 很高兴为您提供帮助。如果你想尊重这个答案,你可以简单地接受它。
    • 谢谢..我实际上也不知道如何接受..;p 还有一件事...有没有办法将总数转换为小时。就像持续时间 = P2DT10H45M0S 转换的字符串 = 58 小时 45 分钟一样,我认为有一个解决方案我认为可能有效。持续时间 = DatatypeFactory.newDuration("P2DT15H45M0S"); int days = dur.getDays(); int hours = dur.getHours(); int 分钟 = dur.getMinutes(); for(int i=0;i
    • @Yadvendra 如果您只想要几个小时,请确保您的持续时间不包含几个月或几年。否则,您可以遍历所有单位并使用 java.util.concurrent.TimeUnit 转换为小时(一天总是像 24 小时 - 忽略 dst 更改等罕见情况),最后总结所有小时部分..
    • 谢谢..我按照上一条评论中提到的方式进行了操作,并且按预期工作。(是的,我的持续时间不包含年或月)。
    【解决方案2】:
        public static Duration convertXmlTypeDuration(String input) throws DatatypeConfigurationException {
           // Duration duration =
           // DatatypeFactory.newInstance().newDuration("P2DT23H59M0S");
           Duration duration = DatatypeFactory.newInstance().newDuration(input);
           return duration;
    }
    

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

    【讨论】:

      【解决方案3】:

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

      duration.toString()
      

      然后关注link。这将有助于正确格式化

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 2021-04-28
        相关资源
        最近更新 更多