Calendar 时间戳精度存在误差问题

最近写了个获取具体时刻的时间公共方法,但是具体用的时候,发现拿具体的时刻时间戳进行比较,却出现了问题,看起来两个时间都是同一天同一时刻,怎么就不相等了,原来是毫秒数不一致。下面是我的时间刻方法:

public static Date getFixTime(Date date, int hour, int min, int second, int num) {
        Calendar time = Calendar.getInstance();
        if (null != date) {
            time.setTime(date);
        }
        time.add(Calendar.DATE, num);
        time.set(Calendar.HOUR_OF_DAY, hour);
        time.set(Calendar.MINUTE, min);
        time.set(Calendar.SECOND, second);
    
        return time.getTime();
    }

咋一看是没有问题,但是漏掉了给毫秒数赋值,这样取的毫秒数就是当前时间的毫秒数,每次是不一样,所以存在问题。正确的方法如下:

 public static Date getFixTime(Date date, int hour, int min, int second, int num) {
        Calendar time = Calendar.getInstance();
        if (null != date) {
            time.setTime(date);
        }
        time.add(Calendar.DATE, num);
        time.set(Calendar.HOUR_OF_DAY, hour);
        time.set(Calendar.MINUTE, min);
        time.set(Calendar.SECOND, second);
        //为了设置时间的更精确性,一定要设置毫秒为0
        time.set(Calendar.MILLISECOND,0);
        return time.getTime();
    }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值