数值与时间转换

发布时间 2023-12-03 20:58:54作者: 朱呀朱~
  • 根据开始时间、预测时长(即几个月),给 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;
    }