今天在开会谈需求的时候,遇到了这么一个需求:要求动态的获得当前日期往前推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