package com.mortals.xhx.utils;


import com.mortals.framework.util.DateUtils;

import java.text.SimpleDateFormat;
import java.util.*;

public class TimeUtil {
    public static List<String> findDaysStr(String begintTime, String endTime) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dBegin = null;
        Date dEnd = null;
        try {
            dBegin = sdf.parse(begintTime);
            dEnd = sdf.parse(endTime);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //存放每一天日期String对象的daysStrList
        List<String> daysStrList = new ArrayList<String>();
        //放入开始的那一天日期String
        daysStrList.add(sdf.format(dBegin));

        Calendar calBegin = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calBegin.setTime(dBegin);

        Calendar calEnd = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calEnd.setTime(dEnd);

        // 判断循环此日期是否在指定日期之后
        while (dEnd.after(calBegin.getTime())) {
            // 根据日历的规则，给定的日历字段增加或减去指定的时间量
            calBegin.add(Calendar.DAY_OF_MONTH, 1);
            String dayStr = sdf.format(calBegin.getTime());
            daysStrList.add(dayStr);
        }

        return daysStrList;
    }

    public static List<String> findMonthsStr(String begintTime, String endTime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date dBegin = null;
        Date dEnd = null;
        try {
            dBegin = sdf.parse(begintTime);
            dEnd = sdf.parse(endTime);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //存放每一天日期String对象的daysStrList
        List<String> monthsStrList = new ArrayList<String>();
        //放入开始的那一天的月份String
        monthsStrList.add(sdf1.format(dBegin));

        Calendar calBegin = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calBegin.setTime(dBegin);

        Calendar calEnd = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calEnd.setTime(dEnd);

        // 判断循环此日期是否在指定日期之后
        while (dEnd.after(calBegin.getTime())) {
            // 根据日历的规则，给定的日历字段增加或减去指定的时间量
            calBegin.add(Calendar.MONTH, 1);
            String dayStr = sdf1.format(calBegin.getTime());
            monthsStrList.add(dayStr);
        }

        return monthsStrList;
    }

    public static List<String> findYearsStr(String begintTime, String endTime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
        Date dBegin = null;
        Date dEnd = null;
        try {
            dBegin = sdf.parse(begintTime);
            dEnd = sdf.parse(endTime);
        } catch (Exception e) {
            e.printStackTrace();
        }

        List<String> yearsStrList = new ArrayList<String>();
        yearsStrList.add(sdf.format(dBegin));

        Calendar calBegin = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calBegin.setTime(dBegin);

        Calendar calEnd = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calEnd.setTime(dEnd);

        // 判断循环此日期是否在指定日期之后
        while (dEnd.after(calBegin.getTime())) {
            // 根据日历的规则，给定的日历字段增加或减去指定的时间量
            calBegin.add(Calendar.YEAR, 1);
            String dayStr = sdf.format(calBegin.getTime());
            yearsStrList.add(dayStr);
        }

        return yearsStrList;
    }

    public static void main(String[] args) {
  /*      String begintTime = "2017";
        String endTime =  "2018";

       // TimeUtil.findDaysStr(begintTime,endTime).stream().forEach(f->System.out.println(f));
        //TimeUtil.findMonthsStr(begintTime,endTime).stream().forEach(f->System.out.println(f));
        TimeUtil.findYearsStr(begintTime,endTime).stream().forEach(f->System.out.println(f));*/


/*        String begintTime = "2017-03-01";
        ;
        String yyyy = DateUtils.getDateTimeStr(DateUtils.StrToDateTime(begintTime, "yyyy"), DateUtils.P_yyyy_MM_dd);
        System.out.println(yyyy);*/




            String startTime="2019-03-18";

            System.out.println(DateUtils.StrToDateTime(startTime,DateUtils.P_yyyy_MM_dd).getTime());
    }

}

