一般情况下我们只需要用Timestampe格式的日期进行各种操作就行了,之所以写这个案例,是因为同事给我一个项目,要求返回前七个月的数据,并且这个憨憨建的表里面的年份和月份是int类型而不是时间戳格式的,这就需要对我们已知的时间进行拆分。
大致代码如下(获取到的月和年分别是当年和当月的整形数值,我前面的文章里面可以找到完整的DateCommon类,该类返回的是TimeStamp类型):
int currentmonth = DateCommon.getCurrentTime().getMonth() + 1;
int currentYear = DateCommon.getCurrentTime().getYear() + 1900;
接下来,通过调用自定义方法返回值,因为只需要返回七个月,所以需要考虑两种情况,一是当前月份大于七月返回今年的七个月,另一种是当前月份小于七个月则返回今年和去年总共七个月并且将月份年份以及我们需要的值存放到自己定义的类里面,代码如下:
List<Bean> list = new ArrayList<>();
int currentmonth = DateCommon.getCurrentTime().getMonth() + 1;
int currentYear = DateCommon.getCurrentTime().getYear() + 1900;
//如果当前月份是7-12月,返回当年七个月的数据(以本月为基础往前七个月)
Bean bean = null;
if (currentmonth > 6) {
for (int i = 0; i <= 6; i++) {
bean = new Bean();
//自定义方法获取某年某月的值的集合
Map<String, Double> map = getFarmTypeMonthValue(2, currentYear, currentmonth - i);
//取值
bean.setActual(map.get("actual"));
bean.setAimed(map.get("aimed"));
//转存
bean.setYear(String.valueOf(currentYear));
bean.setMonth(String.valueOf(currentmonth - i));
//以Bean的形式存到list里面,方便前端遍历
list.add(bean);
}
} else {
for (int i = 0; i < 7; i++) {
bean = new Bean();
if (currentmonth - i > 0) {
Map<String, Double> map = getFarmTypeMonthValue(2, currentYear, currentmonth - i);
bean.setActual(map.get("actual"));
bean.setAimed(map.get("aimed"));
bean.setYear(String.valueOf(currentYear));
bean.setMonth(String.valueOf(currentmonth - i));
} else {
Map<String, Double> map = getFarmTypeMonthValue(2, currentYear - 1, 12 + (currentmonth - i));
bean.setActual(map.get("actual"));
bean.setAimed(map.get("aimed"));
bean.setYear(String.valueOf(currentYear - 1));
bean.setMonth(String.valueOf(12 + (currentmonth - i)));
}
list.add(bean);
}