java时间错误_Java中日期容易计算错误的问题

需求:取得当前时间前一周的时间。比如说:今天是2009-4-23,运行结果则为:2009-4-16。

代码:一般人肯定会这样写:

String lastModified = new

java.text.SimpleDateFormat("yyyy-MM-dd").format(new

java.util.Date((new java.util.Date().getTime() - 7 * 24 * 60 * 60 *

1000)));

表面上看结果是正确的。

问题:如果想取得当前时间前一个月的时间,直接修改上面的7为30,形如:30 * 24 * 60 * 60 *

1000,结果肯定不是你想要的2009-3-24。而是2009-5-13!你没看错!

原因:java日期的数值表达值为long类型的,应该用long型参数去做操作。7 * 24 * 60 * 60 *

1000默认为整型操作,它没有溢出;但30 * 24 * 60 * 60 *

1000对于整型来说是溢出的,变成负数,所以日期反而加大。

解决:

String lastModified = new

java.text.SimpleDateFormat("yyyy-MM-dd").format(new

java.util.Date((new java.util.Date().getTime() - (long)30 * 24 * 60

* 60 * 1000)));

这样写就可以解决问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值