如何将类似PT3M33S的持续时间字符串格式化为HH:MM:SS [英] How to format duration string like PT3M33S to HH:mm:ss

查看:0
本文介绍了如何将类似PT3M33S的持续时间字符串格式化为HH:MM:SS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在搜索StackOverflow关于这种特定日期类型的帖子,我还检查了谷歌的搜索引擎,以验证这种日期类型的名称。到目前为止,我所了解到的是某种谷歌的日期型格式,我不知道它的名称(例如。GMT..)。

日期,实际上是我从JSON对象中提取的"Timer",并将其显示在TextView中,它是字符串类型:

duration:"PT3M33S" 

浏览网络时,我看到你有一种日期格式和简化格式,但当我试图"翻译"这种格式时,PT并不代表AM PM所代表的任何内容,它被翻译成符号"a"和类似小时(HH)、分钟(MM)...

如果有人能解释一下这是什么类型的日期格式,以及如何强制它以字符串形式显示hh:mm:ss以便可以显示到terxtView?

推荐答案

您可以使用java.time.Duration,它模仿ISO-8601 standards,并作为JSR-310 implementation的一部分与Java-8一起引入。使用Java-9介绍了一些更方便的方法。

如果您浏览过上述链接,您可能已经注意到PT3M33S指定的持续时间为3分33秒,您可以在此对象中解析为Duration对象,并且可以通过从中获取日期、小时、分钟和秒来创建根据您的需要设置格式的字符串。

演示:

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        String strIso8601Duration = "PT3M33S";

        Duration duration = Duration.parse(strIso8601Duration);
        // Default format
        System.out.println(duration);

        // Custom format
        // ####################################Java-8####################################
        String formattedElapsedTime = String.format("%02d:%02d:%02d", duration.toHours() % 24,
                duration.toMinutes() % 60, duration.toSeconds() % 60);
        System.out.println(formattedElapsedTime);
        // ##############################################################################

        // ####################################Java-9####################################
        formattedElapsedTime = String.format("%02d:%02d:%02d", duration.toHoursPart(), duration.toMinutesPart(),
                duration.toSecondsPart());
        System.out.println(formattedElapsedTime);
        // ##############################################################################
    }
}

输出:

PT3M33S
00:03:33
00:03:33

Trail: Date Time了解现代日期-时间API。

这篇关于如何将类似PT3M33S的持续时间字符串格式化为HH:MM:SS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆