DateUtils.ts 8.2 KB
/**
 * 日期工具类
 */
export default class DateUtils {
    static get now(): number {
        return Math.floor(this.nowTime / 1000);
    }

    static get nowTime(): number {
        return new Date().getTime();
    }

    static get today(): string {
        let time = new Date(this.nowTime);
        let year = time.getFullYear();
        let month = time.getMonth() + 1;
        let date = time.getDate();
        return `${year}-${this.add(month)}-${this.add(date)}`;
    }

    static timeDay(timeNum: number): string {
        let time = new Date(timeNum);
        let year = time.getFullYear();
        let month = time.getMonth() + 1;
        let date = time.getDate();
        return `${year}-${this.add(month)}-${this.add(date)}`;
    }

    /**
     * 根据秒数格式化字符串
     * @param second 秒数
     * @param type 1:00:00:00   2:yyyy-mm-dd h:m:s    3:00:00   4:xx天前,xx小时前,xx分钟前
     * @return
     */
    static getFormatBySecond(second: number, type: number = 1): string {
        var str: string = "";
        switch (type) {
            case 0:
                str = this.getFormatBySecond0(second);
                break;
            case 1:
                str = this.getFormatBySecond1(second);
                break;
            case 2:
                str = this.getFormatBySecond2(second);
                break;
            case 3:
                str = this.getFormatBySecond3(second);
                break;
            case 4:
                str = this.getFormatBySecond4(second);
                break;
            case 5:
                str = this.getFormatBySecond5(second);
                break;
        }
        return str;
    }

    // 0: 00:00
    private static getFormatBySecond0(t: number = 0): string {
        var minst: number = Math.floor(t / 60);
        var secondt: number = Math.floor(t % 60);
        var mins: string;
        var sens: string;
        if (minst == 0) {
            mins = "00";
        } else if (minst < 10) {
            mins = "0" + minst;
        } else {
            mins = "" + minst;
        }
        if (secondt == 0) {
            sens = "00";
        } else if (secondt < 10) {
            sens = "0" + secondt;
        } else {
            sens = "" + secondt;
        }
        return mins + ":" + sens;
    }

    //1: 00:00:00
    private static getFormatBySecond1(t: number = 0): string {
        let hourst: number = Math.floor(t / 3600);
        let hours: string;
        let day = '';
        if (hourst == 0) {
            hours = "00";
        } else {
            if (hourst < 10)
                hours = "0" + hourst;
            else {
                let h = hourst % 24;
                if (hourst >= 24) {
                    hours = h < 10 ? "0" + h : '' + h;
                    day = Math.floor(hourst / 24) + 'd ';
                } else
                    hours = h < 10 ? "0" + h : '' + h;
            }
        }
        let minst: number = Math.floor((t - hourst * 3600) / 60);
        let secondt: number = Math.floor((t - hourst * 3600) % 60);
        let mins: string;
        let sens: string;
        if (minst == 0) {
            mins = "00";
        } else if (minst < 10) {
            mins = "0" + minst;
        } else {
            mins = "" + minst;
        }
        if (secondt == 0) {
            sens = "00";
        } else if (secondt < 10) {
            sens = "0" + secondt;
        } else {
            sens = "" + secondt;
        }
        return day + hours + ":" + mins + ":" + sens;
    }

    //3: 00:00
    private static getFormatBySecond3(t: number = 0): string {
        var hourst: number = Math.floor(t / 3600);
        var minst: number = Math.floor((t - hourst * 3600) / 60);
        var secondt: number = Math.floor((t - hourst * 3600) % 60);
        var mins: string;
        var sens: string;
        if (minst == 0) {
            mins = "00";
        } else if (minst < 10) {
            mins = "0" + minst;
        } else {
            mins = "" + minst;
        }
        if (secondt == 0) {
            sens = "00";
        } else if (secondt < 10) {
            sens = "0" + secondt;
        } else {
            sens = "" + secondt;
        }
        return mins + ":" + sens;
    }

    //2:yyyy-mm-dd h:m:s
    private static getFormatBySecond2(time: number): string {
        var date: Date = new Date(time);
        var year: number = date.getFullYear();
        var month: number = date.getMonth() + 1; 	//返回的月份从0-11;
        var day: number = date.getDate();
        var hours: number = date.getHours();
        var minute: number = date.getMinutes();
        var second: number = date.getSeconds();
        return year + "-" + month + "-" + day + " " + hours + ":" + minute + ":" + second;

    }

    //4:xx天前,xx小时前,xx分钟前
    private static getFormatBySecond4(time: number): string {
        var t = Math.floor(time / 3600);
        if (t > 0) {
            if (t > 24) {
                return Math.floor(t / 24) + "天前";
            }
            else {
                return t + "小时前";
            }
        }
        else {
            return Math.floor(time / 60) + "分钟前";
        }
    }

    private static getFormatBySecond5(time: number): string {
        // 每个时间单位所对应的秒数
        var oneDay: number = 3600 * 24;
        var oneHourst: number = 3600;
        var oneMinst: number = 60;

        var days = Math.floor(time / oneDay);
        var hourst: number = Math.floor(time % oneDay / oneHourst)
        var minst: number = Math.floor((time - hourst * oneHourst) / oneMinst)  //Math.floor(time % oneDay % oneHourst / oneMinst);
        var secondt: number = Math.floor((time - hourst * oneHourst) % oneMinst) //time;

        var dayss: string = "";
        var hourss: string = ""
        var minss: string = "";
        var secss: string = ""
        if (time > 0) {
            //天
            if (days == 0) {
                dayss = "";
                //小时
                if (hourst == 0) {
                    hourss = "";
                    //分
                    if (minst == 0) {
                        minss = "";
                        if (secondt == 0) {
                            secss = "";
                        } else if (secondt < 10) {
                            secss = "0" + secondt + "秒";
                        } else {
                            secss = "" + secondt + "秒";
                        }

                        return secss;
                    }
                    else {
                        minss = "" + minst + "分钟";
                        if (secondt == 0) {
                            secss = "";
                        } else if (secondt < 10) {
                            secss = "0" + secondt + "秒";
                        } else {
                            secss = "" + secondt + "秒";
                        }

                    }

                    return minss + secss;
                }
                else {
                    hourss = hourst + "小时";
                    if (minst == 0) {
                        minss = "";
                        if (secondt == 0) {
                            secss = "";
                        } else if (secondt < 10) {
                            secss = "0" + secondt + "秒";
                        } else {
                            secss = "" + secondt + "秒";
                        }

                        return hourss + secss

                    } else if (minst < 10) {
                        minss = "0" + minst + "分钟";
                    } else {
                        minss = "" + minst + "分钟";
                    }

                    return hourss + minss;

                }
            }
            else {
                dayss = days + "天";
                if (hourst == 0) {
                    hourss = "";
                } else {
                    if (hourst < 10)
                        hourss = "0" + hourst + "小时";
                    else
                        hourss = "" + hourst + "小时";
                    ;
                }
                return dayss + hourss;
            }
        }
        return "";
    }

    private static add(num) {
        return num < 10 ? '0' + num : num;
    }


}