我一直在搜索有关此特定日期类型的StackOverflow的帖子,我也检查了谷歌的搜索引擎以验证此日期类型的名称。到目前为止,我所学到的是Google的日期类型格式,我不知道它的名称(例如GMT ..)。
日期,实际上是“计时器”我从JSON对象中提取并在textView中显示它,它是字符串类型:
duration:"PT3M33S"
浏览网页我看到你有一个日期格式和简单格式,但当我尝试“翻译”格式时,PT不能代表任何东西作为AM PM支架,它被翻译成符号“a”和类似小时(HH),分钟(MM)......
如果有人能解释我这是什么类型的dateformat,我怎么能强制它显示HH:mm:ss以及字符串所以我可以显示到terxtView?
答案 0 :(得分:1)
您可以使用 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。