java date类型做加法发现的问题

oracle里面有个add_months函数可以对某个日期做加多少个月份的操作,对日期做加法更简单只需用+号就可以了。可是在java里面要实现日期加多少天,只能自己写个方法了。

一种途径是:

1 得到基准日期对应的毫秒数 a = date.getTime()

2 得到要加的天数的毫秒数 b = n天*每天毫秒数(t=24*60*60*1000)

3 c = a+b,然后返回new Date(c);

我一直采用这种方法,直到今天忽然发现不对劲。n=24还没问题,当n>=25时结果就不对劲变小了。

这实在太奇怪了,为什么呢?难道是jdk的bug?

几经测试,终于发现问题所在:

原来我定义 t=24*60*60*1000时前面的类型修饰符是int,这样t*24的时候没问题,t*25时就超过int的最大范围变成负数了,于是a+b的结果就变小了,从而最后相加了n天后的日期反而比基准日期小了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值