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,把时间戳精确到秒再进行比较

总结,把日期转为时间戳进行比较的话,要注意精确度的问题。