java 計算時間序列

通過傳入起始時間和截止時間, 獲得時間List<String>   一般用於Echarts  座標軸

/**
     * 返回時間序列   
     *@param startTime  yyyy-MM-dd HH:mm:ss (日期單位不小於 參數日期格式)
     *@param endTime  yyyy-MM-dd HH:mm:ss
     *@param dateType 日期格式  HOUR,DAY,MONTH,YEAR
     *@return
     *@author: 菜園子
     *2019年2月21日 上午10:35:38
     * @throws ParseException 
     */
    public List<String> dateTimeList(String startTime,String endTime,String dateType) throws ParseException{
        String fmtStr = null;
        int CalendarType = Calendar.DAY_OF_MONTH;
        int timeNum = 3600 * 24;
        switch(dateType){
            case "HOUR" : 
                fmtStr = "yyyy-MM-dd HH"; 
                CalendarType = Calendar.HOUR_OF_DAY;
                timeNum = 3600;
                break;
            case "DAY" :
                fmtStr = "yyyy-MM-dd";
                CalendarType = Calendar.DAY_OF_MONTH;
                timeNum = 3600 * 24 ;
                break;
            case "MONTH" :
                fmtStr = "yyyy-MM";
                CalendarType = Calendar.MONTH;
                timeNum = 3600 * 24 * 30;
                break;
            case "YEAR" :
                fmtStr = "yyyy";
                CalendarType = Calendar.YEAR;
                timeNum = 3600 * 24 * 365 ;
                break;
            default :
                fmtStr = "yyyy-MM-dd";
                CalendarType = Calendar.DAY_OF_MONTH;
                break;
        } 
        
        List<String> list = new ArrayList<>();
        Calendar startCal = Calendar.getInstance();
        Calendar endCal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat(fmtStr);//此處修改日期格式
        Date startDate =  sdf.parse(startTime);
        Date endDate = sdf.parse(endTime);
        startCal.setTime(startDate);
        endCal.setTime(endDate);
        startCal.compareTo(endCal);
      //得到兩個日期相差的天數   
        int days = ((int)(endCal.getTime().getTime()/1000)-(int)(startCal.getTime().getTime()/1000))/timeNum;//此處修改日期單位   
        for(int i = 0;i<=days;i++){
            list.add(sdf.format(startCal.getTime()));
            startCal.add(CalendarType, 1);//此處修改時間單位,   小時/日/星期/月  等等
        }
        return list;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章