为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

BIG阳 2019-07-02 11:00:22
如何在java中格式化持续时间?(例如H:mm:SS格式)我想使用像H:mm:SS这样的模式格式化一个持续时间(以秒为单位)。Java中的当前实用程序设计为格式化时间,而不是持续时间。
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

如果您在8之前使用Java版本.。你可以用Joda时间PeriodFormatter..如果您确实有一个持续时间(即经过的时间,没有引用日历系统),那么您可能应该使用Duration在大多数情况下,你可以打电话给toPeriod(指明PeriodType你想要反映25小时是否变成1天和1小时,等等)Period你可以格式化。

如果您正在使用Java 8或更高版本:我通常建议使用java.time.Duration表示持续时间。然后你可以打电话给getSeconds()或者,如果需要的话,可以获得标准字符串格式的整数-尽管您应该注意持续时间为负值的情况,因为您可能需要单株输出字符串中的负号。所以就像:

public static String formatDuration(Duration duration) {
    long seconds = duration.getSeconds();
    long absSeconds = Math.abs(seconds);
    String positive = String.format(
        "%d:%02d:%02d",
        absSeconds / 3600,
        (absSeconds % 3600) / 60,
        absSeconds % 60);
    return seconds < 0 ? "-" + positive : positive;}

以这种方式格式化是合理很简单,即使是烦人的手工操作。为解析一般情况下会变得更难.。当然,即使使用Java 8,您仍然可以使用Joda时间。


查看完整回答
反对 回复 2019-07-02
?
弑天下

TA贡献1818条经验 获得超8个赞

如果您不想在库中拖拽,那么使用格式化程序或相关的快捷方式就足够简单了。给定整数秒数s:

  String.format("%d:%02d:%02d", s / 3600, (s % 3600) / 60, (s % 60));


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 1425 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信