java获取当前时间的下一天以及30天后的时间

 

背景:最近在写一个项目时,有这样的一个需求。需要得到当前时间的下一天以及30后的时间。在计算30天后的时间时出现了一点问题,时间出错,但是感觉自己的公式没有出错,后来才发现是运算超出了Integer的范围。

(  24 * 60 * 60*1000) 这种计算表达式在 Java中是默认以 Integer类型来的,若不超过 Integer的最大值则没有问题,若超过则必须加上L (  24 * 60 * 60*1000L) 

当然为了避免出现此类问题,也可以采用最粗暴的方法,就是不管 表达式的计算结果是否超过了 Integer的最大值,都用 L来标识 是个 Long类型,这样绝对不会出错。若是一眼就能计算出来的

可以不用加L,比如:(8 * 24 * 32) 基本肯定不会超过 Integer的最大值不用加L也行,若是一眼计算不出来感觉很大的如:(180 * 24 * 500 * 24) 这种一眼计算不出来,且感觉会超过 Integer的最大值的

需要加L来标识 计算出来的结果是一个Long类型,以防止溢出Bug.

import java.util.Date;
public class Test {
    public static void main(String[] args) {
        //获取当前时间的下一天的时间
        Date date1=new Date(System.currentTimeMillis()+24*60*60*1000);
        System.out.println(date1);

        //获取当前时间的30天后的时间
        /*
            如果运算中不加L的话会出错
            Date date30=new Date(System.currentTimeMillis()+24*60*60*1000*30);
            
        */

        Date date30=new Date(System.currentTimeMillis()+24*60*60*1000*30L);
        System.out.println(date30);
    }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值