有个paymentTime,为String类型,为yyyy-MM-dd HH:mm:ss格式,记录了时间信息,在List<Orders> ordersList=ordersService.list()得到总list之后,怎么按照今年的时间划分成12个月的order_price,并用CollUtil.newArrayList输出出来
时间: 2024-03-26 15:36:20 浏览: 54
输出一年的时间段,先按月份输出,再按周数划分
您可以按照以下步骤进行操作:
1. 首先,将List<Orders> ordersList中的订单按照paymentTime字段升序排序,以确保数据是按照时间顺序排列的。
2. 然后,创建一个长度为12的数组monthOrderPrice,用于存储每个月的订单总价。
3. 接下来,遍历ordersList中的每个订单,将订单的总价加入到对应月份的monthOrderPrice数组中。
具体实现方式如下:
```
double[] monthOrderPrice = new double[12];
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (Orders order : ordersList) {
Date paymentTime = sdf.parse(order.getPaymentTime());
Calendar calendar = Calendar.getInstance();
calendar.setTime(paymentTime);
int month = calendar.get(Calendar.MONTH);
monthOrderPrice[month] += order.getOrderPrice();
}
```
4. 最后,使用CollUtil.newArrayList方法将monthOrderPrice数组转换为List<Double>类型,并输出即可。
```
List<Double> monthOrderPriceList = CollUtil.newArrayList(monthOrderPrice);
System.out.println(monthOrderPriceList);
```
完整代码如下:
```
List<Orders> ordersList = ordersService.list();
Collections.sort(ordersList, (o1, o2) -> o1.getPaymentTime().compareTo(o2.getPaymentTime()));
double[] monthOrderPrice = new double[12];
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (Orders order : ordersList) {
Date paymentTime = sdf.parse(order.getPaymentTime());
Calendar calendar = Calendar.getInstance();
calendar.setTime(paymentTime);
int month = calendar.get(Calendar.MONTH);
monthOrderPrice[month] += order.getOrderPrice();
}
List<Double> monthOrderPriceList = CollUtil.newArrayList(monthOrderPrice);
System.out.println(monthOrderPriceList);
```
阅读全文