package com.casic.missiles.util;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;


public class TimeConvertUtil {
    public static String TimeConverter(String totalMinutesStr){
        if(ObjectUtil.isNotEmpty(totalMinutesStr)){
            int totalMinutes = Integer.valueOf(totalMinutesStr);
            int days = totalMinutes/(24*60);
            int hours = (totalMinutes%(24*60))/60;
            int minutes = totalMinutes%60;
            return String.format("%d天%d时%d分",days,hours,minutes);
        }
        return "";
    }


    public static List<String> weekDays(){
        List<String> weekDays = new ArrayList<>();
        DateTime dateTime=  DateUtil.beginOfWeek(new Date());
        weekDays.add(DateUtil.beginOfWeek(new Date()).toString("yyyy-MM-dd"));
        for(int i=1;i<=6;i++){
            weekDays.add(DateUtil.offsetDay(dateTime,i).toString("yyyy-MM-dd"));
        }
        return weekDays;
    }

    public static List<String> monthDays(){
        List<String> monthDays = new ArrayList<>();
        DateTime dateTime1=  DateUtil.beginOfMonth(new Date());
        DateTime dateTime2=  DateUtil.endOfMonth(new Date());
        int daysOfCurrentMonth = (int) ((dateTime2.getTime() - dateTime1.getTime()) / (1000 * 60 * 60 * 24));
        monthDays.add(DateUtil.beginOfMonth(new Date()).toString("yyyy-MM-dd"));
        for(int i=1;i<=daysOfCurrentMonth;i++){
            monthDays.add(DateUtil.offsetDay(dateTime1,i).toString("yyyy-MM-dd"));
        }
        return monthDays;
    }

    public static List<String> betweenDays(String begTime,String endTime){
        List<String> betweenDays = new ArrayList<>();
        DateTime dateTime1=  DateUtil.parseDateTime(begTime);
        DateTime dateTime2=  DateUtil.parseDateTime(endTime);
        int betweenDay = (int) ((dateTime2.getTime() - dateTime1.getTime()) / (1000 * 60 * 60 * 24));
        for(int i=0;i<=betweenDay;i++){
            betweenDays.add(DateUtil.offsetDay(dateTime1,i).toString("yyyy-MM-dd"));
        }
        return betweenDays;
    }

    public static List<String> getPastSevenDays() {
        List<String> dates = new ArrayList<>();
        LocalDate currentDate = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        for (int i = 6; i >= 0; i--) {
            String date = currentDate.minusDays(i).format(formatter);
            dates.add(date);
        }
        return dates;
    }

    public static List<String> getYearMonth() {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        List<String> list = new ArrayList<>();
        for (int i = 1; i < 13; i++) {
            String month = i + "";
            if (i < 10) {
                month = "0" + i;
            }
            list.add(year + "-" + month);
        }
        return list;
    }
}
