如何在java中格式化持续时间?(例如H:mm:SS格式)

如何在java中格式化持续时间?(例如H:mm:SS格式)

我想使用像H:mm:SS这样的模式格式化一个持续时间(以秒为单位)。Java中的当前实用程序设计为格式化时间,而不是持续时间。



BIG阳
浏览 1426回答 3
3回答

qq_遁去的一_1

如果您在8之前使用Java版本.。你可以用Joda时间和PeriodFormatter..如果您确实有一个持续时间(即经过的时间,没有引用日历系统),那么您可能应该使用Duration在大多数情况下,你可以打电话给toPeriod(指明PeriodType你想要反映25小时是否变成1天和1小时,等等)Period你可以格式化。如果您正在使用Java 8或更高版本:我通常建议使用java.time.Duration表示持续时间。然后你可以打电话给getSeconds()或者,如果需要的话,可以获得标准字符串格式的整数-尽管您应该注意持续时间为负值的情况,因为您可能需要单株输出字符串中的负号。所以就像:public&nbsp;static&nbsp;String&nbsp;formatDuration(Duration&nbsp;duration)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;seconds&nbsp;=&nbsp;duration.getSeconds(); &nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;absSeconds&nbsp;=&nbsp;Math.abs(seconds); &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;positive&nbsp;=&nbsp;String.format( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"%d:%02d:%02d", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;absSeconds&nbsp;/&nbsp;3600, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(absSeconds&nbsp;%&nbsp;3600)&nbsp;/&nbsp;60, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;absSeconds&nbsp;%&nbsp;60); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;seconds&nbsp;<&nbsp;0&nbsp;?&nbsp;"-"&nbsp;+&nbsp;positive&nbsp;:&nbsp;positive;}以这种方式格式化是合理很简单,即使是烦人的手工操作。为解析一般情况下会变得更难.。当然,即使使用Java 8,您仍然可以使用Joda时间。

弑天下

如果您不想在库中拖拽,那么使用格式化程序或相关的快捷方式就足够简单了。给定整数秒数s:&nbsp;&nbsp;String.format("%d:%02d:%02d",&nbsp;s&nbsp;/&nbsp;3600,&nbsp;(s&nbsp;%&nbsp;3600)&nbsp;/&nbsp;60,&nbsp;(s&nbsp;%&nbsp;60));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java