介绍
主要讲解java 环境下,如何将秒转换为播放器的格式:00:00:00(时:分:秒)。
很多情况下存储一个视频或者音频的长度可能都是秒。而我们UI上显示需要显示成时分秒格式。
以前弄过很多次的这种时间转变。但是每次隔一段较长时间后。
再次需要的时候,经常重头开始。所以想写一篇彻底交代该如何实现的文章。
把整个思路也进行完整的交代。
准备
列一下各种关键值的转换,看懂这个表格后。我们敲代码的时候才能有一个具体的概念。
秒钟 | 分钟 | 时钟 |
---|---|---|
1 | 0.016667 | 0.000278 |
30 | 0.5 | 0.008333 |
60 | 1 | 0.016667 |
1800 | 30 | 0.5 |
3600 | 60 | 1 |
7200 | 120 | 2 |
86400 | 1440 | 24 |
我们可以看到:
1.秒钟没有达到60,分钟和时钟没有值。
2.秒钟没有达到3600,时钟没有值。
3.秒钟达到86400的时候,时钟已经不够了已经跨天了。我们需要day的参数。
代码
当我们知道了关键节点的转换关系后
代码语言:javascript复制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("d:d:d", hour, minute, second));
}
//输出00:01:40
我们下面在来详细介绍上面的代码和意义。
int hour = second / 3600
:这行代码利用了int值只能是整数的形式,实际计算值是:0.027778。但是时分秒格式化显示的时候,没有小数位。我们可以直接取整,得到实际的小时数。
second % 3600
:这个百分号在计算的时候是定义了取余计算。也就是我们除法除不尽的时候的余数值。
然后后面的second / 60
和second % 60
和上面取时的值的概念是一样的。
最后输出的时候:String.format("d:d:d", hour, minute, second)
是因为根据字符长度进行了补零操作,因为我们如果得到的结果是1:40秒的。那么我们需要在1的前面补0
这种补0计算,最便捷的方法就是直接使用d
进行补充即可。这个关键字的意思就是输入整数,整数长度小于2的时候进行补充长度。如果我们想补充更长调整2为其他数字就可以了,在String进行格式化的时候会根据这个值判断整数长度是否满足,不够的就会补0。
6行代码,实现转00:00:00格式。同时交代了计算逻辑
疑问
上面的计算中,秒值如果是外部输入的情况。需要判断是否为0 么?
答案是:不需要。数学公式计算中被除数是可以为0的,只是除数不能为0。
在上面的例子中,3600 和60 才是除数。
希望能够帮助大家弄明白转换的逻辑。