calendar前推n天_获取指定日期和它之前几天,之间的所有日期?千万不要踩了这个大坑!...

本文讲述了在Java中使用Calendar进行日期前推操作时遇到的一个大坑。当需要获取当前日期前30天的日期时,由于计算过程中整型溢出,导致从第26天开始日期出现错误。解决方案是将计算毫秒数的表达式改为Long类型,避免整型溢出,从而正确地获取所需日期。
摘要由CSDN通过智能技术生成

今天在开会谈需求的时候,遇到了这么一个需求:要求动态的获得当前日期往前推30天,这之间所有天数的数据之和。

首先会想到的,肯定是Java里处理日期的几个类,常用的有三个:Date,SimpleDateFormat,和Calendar。将他们三个类组合运用,基本上就能满足大部分项目中,对于日期处理的需求。

其次,这个项目的数据,在数据库里存的日期是yyyy-MM-dd格式的。所以我需要获取这30天的满足这种格式的所有字符串日期,然后用sql语句查出对应的数据。

稍加思考,对于这类需求的算法思路就是:

1.将指定日期通过SimpleDateFormat转换成Date类型。

2.通过Date的getTime()方法,获取当前的毫秒数。

3.将当前日期获得的毫秒数-往前推的第几天*每一天的毫秒数,就得到了往前推的第几天的毫秒数。

4.将获取的之前天数的毫秒数,通过SimpleDateFormat转换成需要的时间格式,就获得了那一天的时间字符串。

5.循环拿着获取的每一个时间字符串通过sql获取对应的数据。

对于日期部分的需求,用代码来表示就是:

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");

Date date= simpleDateFormat.parse("2019-10-10"); //填入指定日期

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

for (int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值