如何读取从youtube api kotlin/java返回的视频的持续时间

1sbrub3j  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(319)

我基本上想转换这个iso格式 PT18M8S 像这样的 13:09 或者 10000ms 我从youtube数据api v3获取了以下格式:

jm81lzqq

jm81lzqq1#

你可以用 java.time.Duration 它以iso-8601标准为模型,并作为jsr-310实现的一部分随java-8一起引入。在java-9中引入了一些更方便的方法。
如果你浏览了以上链接,你可能已经注意到了 PT18M8S 指定可以解析为 Duration 对象之外,您可以根据需要创建一个格式为天、小时、分钟、秒的字符串。
演示:

import java.time.Duration;

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

        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);
        // ##############################################################################

        System.out.println(duration.toMillis() + " milliseconds");
    }
}

输出:

PT18M8S
00:18:08
00:18:08
1088000 milliseconds

从trail:date-time了解现代日期时间api。
出于任何原因,如果您必须坚持使用Java6或Java7,您可以使用threeten backport,它将大部分java.time功能向后移植到Java6和Java7。
如果您正在为一个android项目工作,并且您的android api级别仍然不符合java-8,请检查通过desugaring提供的java8+api以及如何在android项目中使用threetenabp。

相关问题