export default {
    /**
     * @param {时间处理(今日,昨日)} 
     * @param {传入值} time 
     * @param {是否携带时分秒} isTime
     * @returns 
     */
    jktTimes(time, isTime) {
        if (time == undefined) return "";
        var today = new Date().getDate();//当前时间-日
        var day = new Date(time).getDate();//传入时间-日

        var newday = today - day
        if (newday == 0) {
            if (isTime == "否") {
                return "今天";
            } else {
                var newTime = time.split(" ")[1]
                var newTime2 = newTime.split(":")
                return newTime2[0] + ":" + newTime2[1];
            }
        } else if (newday == 1) {
            if (isTime == "否") {
                return "昨天";
            } else {
                var newTime = time.split(" ")[1]
                var newTime2 = newTime.split(":")
                return newTime2[0] + ":" + newTime2[1];
            }
        } else {
            var newTime = time.split(" ")

            if (isTime == "否") {
                return newTime[0]
            } else {
                var newTime2 = newTime[1].split(":")
                return newTime2[0] + ":" + newTime2[1];
            }
        }
    },
    /**
     * @指定获取开始时间结束时间
     */
    getDays(value) {
        let oneDay = 24 * 60 * 60 * 1000;
        let endTime = new Date(Date.now());
        endTime = this.formatterDate(endTime, "yyyy-MM-dd");
        let startTime = new Date(Date.now() - value * oneDay);
        startTime = this.formatterDate(startTime, "yyyy-MM-dd");
        const days = [startTime, endTime]
        return days;
    },
    /**
     * @处理公共日期格式
     */
    formatterDate(date, fmt) {
        let nowDate = {
            yyyy: date.getFullYear(), // 年
            MM: date.getMonth() + 1, // 月份
            dd: date.getDate(), //日
            hh: date.getHours(),
            mm: date.getMinutes(),
            ss: date.getSeconds(),
        };
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        for (var k in nowDate) {
            if (new RegExp("(" + k + ")").test(fmt)) {
                fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? nowDate[k] : ("00" + nowDate[k]).substr(("" + nowDate[k]).length));
            }
        }
        return fmt;
    },
    /**
     * @获取年月日时分秒
     * @returns
     */
    getFormatterDate(time3) {
        var date = new Date(time3);
        var Y = date.getFullYear() + "-";
        var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";
        var D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";

        var h = (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":";
        var m = (date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()) + ":";
        var s = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
        var strDate = Y + M + D + h + m + s;

        return strDate;
    },
    /**
     * @获取当前日期前一年的日期
     */
    getYearLast(dateStr) {
        // 假设要获取的日期为dateStr，格式为"YYYY-MM-DD"
        let date = new Date(dateStr);
        let Y = date.getFullYear() - 1; // 获取前一年的年份
        let M = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1; // 月
        let D; // 日

        var h = (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":";
        var m = (date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()) + ":";
        var s = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();

        // 判断原日期的月份是否为2月份
        if (date.getMonth() === 1) { // 2月份
            // 判断前一年是否为闰年
            if (Y % 4 === 0 && Y % 100 !== 0 || Y % 400 === 0) { // 闰年
                D = Math.min(date.getDate(), 29); // 新日期的日期最大为29
            } else { // 平年
                D = Math.min(date.getDate(), 28); // 新日期的日期最大为28
            }
        } else { // 非2月份
            D = date.getDate(); // 新日期的日期为原日期的日期
        }
        let newDateStr = Y + "-" + M + "-" + (D < 10 ? "0" + D : D) + " " + h + m + s; // 格式化日期字符串
        return newDateStr
    },
    /**
     * @统计两个日期之间的月份
     */
    getMonths(date1, date2) {
        //用-分成数组
        date1 = date1.split("-");
        date2 = date2.split("-");
        //获取年,月数
        var year1 = parseInt(date1[0]),
            month1 = parseInt(date1[1]),
            year2 = parseInt(date2[0]),
            month2 = parseInt(date2[1]),
            //通过年,月差计算月份差
            months = (year2 - year1) * 12 + (month2 - month1) + 1;
        return months;
    },
    /**
     * @获取年月日星期几
     */
    getDate() {
        var date = new Date();
        var year = date.getFullYear(); //  返回的是年份
        var month = date.getMonth() + 1; //  返回的月份上个月的月份，记得+1才是当月
        if (month < 10) {
            month = "0" + month;
        }
        var dates = date.getDate(); //  返回的是几号
        if (dates < 10) {
            dates = "0" + dates;
        }
        var day = date.getDay(); //  周一返回的是1，周六是6，但是周日是0
        var arr = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
        return { year, month, dates, day, arr, };
    },
    /**
     * @获取当前周开始结束日期
     */
    getCurrentWeekDate() {
        const now = new Date();
        const startOfWeek = new Date(now.getFullYear(), now.getMonth(), now.getDate() - now.getDay() + 1); // 本周开始日期
        const endOfWeek = new Date(startOfWeek);
        endOfWeek.setDate(endOfWeek.getDate() + 6); // 本周结束日期

        const startDate = this.getFormatterDate(startOfWeek).split(' ')[0];
        const endDate = this.getFormatterDate(endOfWeek).split(' ')[0];

        return {
            startDate: startDate,
            endDate: endDate
        }
    },
    /**
     * @时间重组
     * @param { 时间段 } chooseTime 
     */
    timeRestructuring(chooseTime) {
        var startTime = "";
        var endTime = "";
        let start = chooseTime[0];
        let end = chooseTime[1];

        if (start == 0 && end == 0) {
            startTime = "00:00";
            endTime = "00:30";
        }

        if ((!start && start !== 0) || !end) {
            startTime = "";
            endTime = "";
            return;
        }

        if (start % 1 === 0.5) {
            start = (start - 0.5 < 10 ? "0" : "") + (start - 0.5) + ":30";
        } else {
            start = (start < 10 ? "0" : "") + start + ":00";
        }

        if (Number.isInteger(end)) {
            if (end === 24) {
                end = "23:30";
            } else {
                end = (end - 0.5 < 10 ? "0" : "") + end + ":00";
            }
        } else {
            if (end === 24) {
                end = "23:30";
            } else {
                end = (end < 10 ? "0" : "") + (end - 0.5) + ":30";
            }
        }

        return {
            startTime: start,
            endTime: end,
        };
    }
}