关于时间的问题,多少多少年前

来源:互联网 发布:mac 磁盘被锁定怎么装 编辑:程序博客网 时间:2024/06/11 05:16

最近在一个基金筛选功能,需要知道基金五年内的月收益率,程序一般是在每个月三、四号才执行,需要获取上个月到之前五年的每日累计净值,那么我需要去数据库进行查询,查询需要条件,于是烧脑的东西就来,就我需要计算这个开始与结束的时间

比如:今天2016年8月10号,我需要的结束时间是2016月7月31号,开始时间是2011月8月1号

看起来一目了然,但是不好计算

我开始的计算方式是,先计算结束时间,再通过结束时间计算开始时间

于是就操蛋了,因为每个月有时是31号,有时是30号,Java的Calendar这个操作时间的工具类就似乎不太灵了

就算计算出了结束时间,还要计算开始时间,MMD,结果就是又被恶心了一下

那怎么处理,其实是只需要获取这个月1号就可以了,虽然并不是实际的结束时间,接着计算开始时间就极为方便了,只需要年份-5就可以得到实际的开始时间

<span style="font-family:Courier New;background-color: rgb(255, 255, 255);">public static void main(String[] args) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//结束时间Calendar c = Calendar.getInstance();c.set(Calendar.DAY_OF_MONTH, 1);System.out.println(sdf.format(c.getTime()));//开始时间c.add(Calendar.YEAR, -5);System.out.println(sdf.format(c.getTime()));}</span>
<span style="font-family:Courier New;"><span style="background-color: rgb(255, 255, 255);">输出结果:</span></span>
结束时间:2016-08-01
开始时间:2011-08-01

于是就可以进行数据筛选了



1 0