侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 290 篇文章
  • 累计创建 57 个标签
  • 累计收到 98 条评论

java 时间转换,将秒转换为时分秒格式

Z同学
2021-12-16 / 0 评论 / 3 点赞 / 1,896 阅读 / 1,190 字
温馨提示:
本文最后更新于 2021-12-17,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

主要讲解java 环境下,如何将秒转换为播放器的格式:00:00:00(时:分:秒)。

很多情况下存储一个视频或者音频的长度可能都是秒。而我们UI上显示需要显示成时分秒格式。

以前弄过很多次的这种时间转变。但是每次隔一段较长时间后。

再次需要的时候,经常重头开始。所以想写一篇彻底交代该如何实现的文章。

把整个思路也进行完整的交代。

准备

列一下各种关键值的转换,看懂这个表格后。我们敲代码的时候才能有一个具体的概念。

秒钟分钟时钟
10.0166670.000278
300.50.008333
6010.016667
1800300.5
3600601
72001202
86400144024

我们可以看到:

1.秒钟没有达到60,分钟和时钟没有值。

2.秒钟没有达到3600,时钟没有值。

3.秒钟达到86400的时候,时钟已经不够了已经跨天了。我们需要day的参数。

代码

当我们知道了关键节点的转换关系后

public static void main(String[] args) {
    int second = 100; //这是随便输入的秒值
    int hour = second / 3600; // 得到分钟数
    second = second % 3600;//剩余的秒数
    int minute = second / 60;//得到分
    second = second % 60;//剩余的秒
    System.out.println(String.format("%02d:%02d:%02d", hour, minute, second)); 
}
 //输出00:01:40

我们下面在来详细介绍上面的代码和意义。

int hour = second / 3600: 这行代码利用了int值只能是整数的形式,实际计算值是:0.027778。但是时分秒格式化显示的时候,没有小数位。我们可以直接取整,得到实际的小时数。

second % 3600: 这个百分号在计算的时候是定义了取余计算。也就是我们除法除不尽的时候的余数值。

然后后面的second / 60second % 60和上面取时的值的概念是一样的。

最后输出的时候:String.format("%02d:%02d:%02d", hour, minute, second)

是因为根据字符长度进行了补零操作,因为我们如果得到的结果是1:40秒的。那么我们需要在1的前面补0

这种补0计算,最便捷的方法就是直接使用%02d 进行补充即可。这个关键字的意思就是输入整数,整数长度小于2的时候进行补充长度。如果我们想补充更长调整2为其他数字就可以了,在String进行格式化的时候会根据这个值判断整数长度是否满足,不够的就会补0。

疑问

上面的计算中,秒值如果是外部输入的情况。需要判断是否为0 么?

答案是:不需要。数学公式计算中被除数是可以为0的,只是除数不能为0。

在上面的例子中,3600 和60 才是除数。

希望能够帮助大家弄明白转换的逻辑。

3

评论区