我基本上想转换这个iso格式 PT18M8S 像这样的 13:09 或者 10000ms 我从youtube数据api v3获取了以下格式:
PT18M8S
13:09
10000ms
jm81lzqq1#
你可以用 java.time.Duration 它以iso-8601标准为模型,并作为jsr-310实现的一部分随java-8一起引入。在java-9中引入了一些更方便的方法。如果你浏览了以上链接,你可能已经注意到了 PT18M8S 指定可以解析为 Duration 对象之外,您可以根据需要创建一个格式为天、小时、分钟、秒的字符串。演示:
java.time.Duration
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。
1条答案
按热度按时间jm81lzqq1#
你可以用
java.time.Duration
它以iso-8601标准为模型,并作为jsr-310实现的一部分随java-8一起引入。在java-9中引入了一些更方便的方法。如果你浏览了以上链接,你可能已经注意到了
PT18M8S
指定可以解析为Duration
对象之外,您可以根据需要创建一个格式为天、小时、分钟、秒的字符串。演示:
输出:
从trail:date-time了解现代日期时间api。
出于任何原因,如果您必须坚持使用Java6或Java7,您可以使用threeten backport,它将大部分java.time功能向后移植到Java6和Java7。
如果您正在为一个android项目工作,并且您的android api级别仍然不符合java-8,请检查通过desugaring提供的java8+api以及如何在android项目中使用threetenabp。