package com.kxs.common.core.util;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.google.common.collect.Lists;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

/**
 * 仓库模块 日期操作
 *
 * @author 没秃顶的码农
 * @date 2024-01-11
 */
public class TotalDateUtil {

    /**
     * 获取日期 格式 20240110
     *
     * @return {@link String}
     */
    public static Integer getDateNumber(LocalDate date){

        return Integer.valueOf(LocalDateTimeUtil.format(date, DatePattern.PURE_DATE_PATTERN));
    }

    /**
     * 获取月份 格式 202401
     *
     * @return {@link String}
     */
    public static Integer getMonthNumber(LocalDate date){

        return Integer.valueOf(LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN));
    }

    /**
     * 获取过去某几个的月份列表
     *
     * @param date 日期
     * @return {@link Integer}
     */
    public static List<Integer> getMonthList(LocalDate date, Integer num){

        List<Integer> times = Lists.newArrayList();
        for (int i = 0; i < num; i++) {
            // 计算过去半年每月月份
            LocalDate currentDay = date.minusMonths(i);

            times.add(getMonthNumber(currentDay));
        }
        return times;
    }

    /**
     * 获取过去某几天的日列表
     *
     * @param date 日期
     * @return {@link List}<{@link Integer}>
     */
    public static List<Integer> getDayList(LocalDate date, Integer num){

        List<Integer> times = Lists.newArrayList();

        for (int i = 0; i < num; i++) {
            // 计算每一天的日期
            LocalDate currentDay = date.minusDays(i);
            //获取当前日的月份值
            times.add(getDateNumber(currentDay));
        }
        return times;
    }

}
