1、遇到的问题
接上一篇七牛云直播转mp4并截取视频,在比较截取时间和直播推流时间时遇到一个问题。我是把前端传的截取时间和直播推流时间都转成时间戳进行比较的。前端传的截取开始时间是和推流开始时间一致的,都是2024-06-06 14:00:00,但是测试的时候发现提示截取的开始时间小于推流的开始时间。当时比较纳闷,就debug看了一下,发现日期转为时间戳后是精确到毫秒的,但是我们日期格式是到秒的,所以中间存在误差。
2、解决问题
我写了个test,一起看下:
@Test
void test3(){
//前端传的截取时间,转为时间戳
long timeBegin1 = 1717905600000L;//转为日期 2024-06-09 12:00:00
long timeEnd1 = 1717909200000L; //转为日期 2024-06-09 13:00:00
//直播推流时间
long timeBegin2 = 1717905600666L;//转为日期 2024-06-09 12:00:00
long timeEnd2 = 1717909200888L;//转为日期 2024-06-09 13:00:00
//比较逻辑,前端传的截取时间在推流时间范围内才是符合要求的
if(timeBegin1 >= timeBegin2 && timeEnd1 <= timeEnd2){
System.out.println("符合要求");
}else{
System.out.println("不符合要求");
}
}
从上面这段代码可以看出,如果只看2024-06-09 12:00:00日期的话,timeBegin1和timeBegin2是相等的。但是转为时间戳后timeBegin2是要大于timeBegin1的。所以,我们开发过程中还是要注意比较的方式。
解决方案有两种:
1.用Date类的compareTo方法进行比较
2.转为时间戳后/1000,把时间戳精确到秒再进行比较
总结,把日期转为时间戳进行比较的话,要注意精确度的问题。