-
根据开始时间、预测时长(即几个月),给 String 数组的时间 predictTime 赋值,并返回 double 数组的时间 tt
/** * 获取预测时间段,封装进double类型数组,格式:202006 * @param predictionStart 开始预测时间 ‘2023-01’ * @param predictionPoint 预测时长 * @param predictTime 预测时间数组 * @return */ private double[] getPredictionTimes(String predictionStart, int predictionPoint, String[] predictTime) { Calendar cal = Calendar.getInstance(); int timeLength = predictionPoint; double[] tt = new double[timeLength]; try { cal.setTime(SDF.parse(predictionStart)); for (int i = 0; i < timeLength; i++) { String t = SDF.format(cal.getTime()); predictTime[i] = t; t = t.split("-")[0] + t.split("-")[1]; tt[i] = Double.valueOf(t); cal.add(Calendar.MONTH, 1); } } catch (Exception e) { tt = new double[timeLength]; } return tt; }
-
根据开始时间、预测数,来获取预测时间的列表
/** * 获取开始年月后多少个月的年份列表 * * @param startTime 开始年份 * @param size 数量 * @return:list */ public static List<String> getMonthStartDateList(String startTime, int size) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); // 声明保存日期集合 List<String> list = new ArrayList<>(); try { // 转化成日期类型 Date startDate = sdf.parse(startTime); //用Calendar 进行日期比较判断 Calendar calendar = Calendar.getInstance(); for (int i = 0; i < size; i++) { // 把日期添加到集合 list.add(sdf.format(startDate)); // 设置日期 calendar.setTime(startDate); //把月数增加 1 calendar.add(Calendar.MONTH, 1); // 获取增加后的日期 startDate = calendar.getTime(); } } catch (Exception e) { e.printStackTrace(); } return list; }
- 与第一个的 predictTime 获取值类似,不过一个是数组,一个是集合
-
根据开始和结束时间,获取此期间内的年份列表,并转换成 “ yyyy-MM ” 的形式
/** * 获取开始年月结束年份直接的年份列表 * @param startTime 开始年份 * @param endTime 结束年份 * @return:list */ public List<String> getBetweenMonths(String startTime, String endTime) { List<String> months = new ArrayList<String>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); try { Date start = sdf.parse(startTime); Date end = sdf.parse(endTime); Calendar startSign = Calendar.getInstance(); startSign.setTime(start); months.add(sdf.format(startSign.getTime())); startSign.add(Calendar.MONTH, 1); Calendar endSign = Calendar.getInstance(); endSign.setTime(end); while (startSign.before(endSign)) { months.add(sdf.format(startSign.getTime())); startSign.add(Calendar.MONTH, 1); } months.add(sdf.format(startSign.getTime())); } catch (Exception e) { e.printStackTrace(); } return months; }