欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

日期选择方法总结 原生js

程序员文章站 2022-07-02 14:12:17
日期选择方法总结做项目的时候,经常碰到需要根据不同时间段来查询结果的需求,总结了一下当前用到的各个时间段,起始时间和结束时间方法,话不多说,直接上代码:一.获取对应时区的时间getTimeZoneE8(i, timeInt) { if (typeof i !== 'number') return; let d = new Date(timeInt); let len = d.getTime(); let offset = d.getTimezoneOffset...

做项目的时候,经常碰到需要根据不同时间段来查询结果的需求,总结了一下当前用到的各个时间段,起始时间和结束时间方法,话不多说,直接上代码:

一.获取对应时区的时间

getTimeZoneE8(i, timeInt) { 
    if (typeof i !== 'number') return;
    let d = new Date(timeInt);
    let len = d.getTime();
    let offset = d.getTimezoneOffset() * 60000;
    let utcTime = len + offset;
    return new Date(utcTime + 3600000 * i);
}

二.获取各个时间段的起始时间和结束时间

    getTime(time,limitObj) {
        let eTime = this.getTimeZoneE8(8, new Date()).format('yyyy-MM-dd 23:59:59.999')
        let date = new Date(), nDate = 1
        let weekDay = date.getDay();
        switch (time) {
            case 'today':  //今日
                nDate = 0;
                break;
            case 'yesterday':  //昨日
                nDate = 0
                eTime = this.getTimeZoneE8(8, date.setDate(date.getDate() - 1)).format('yyyy-MM-dd 23:59:59.999')
                break
            case 'thisWeek':  //本周
                nDate = weekDay - 1
                break
            case 'lastWeek':  //上周
                date = date.setDate(date.getDate() - weekDay)
                date = this.getTimeZoneE8(8, date)
                eTime = this.getTimeZoneE8(8, date).format('yyyy-MM-dd 23:59:59.999')
                nDate = 6
                break
            case 'limit':  //已选择时间段
                nDate = limitObj.start
                eTime = limitObj.end
                break
            case 'thisMonth':  //本月
                nDate = date.getDate() - 1
                break
            case 'lastMonth':  //上月
                date = date.setDate(date.getDate() - date.getDate())
                date = this.getTimeZoneE8(8, date)
                nDate = date.getDate() - 1
                eTime = this.getTimeZoneE8(8, date).format('yyyy-MM-dd 23:59:59.999')
                break
            default:
                break;
        }

        date = date.setDate(date.getDate() - nDate)
        let seTime = {
            start: time === 'limit' ? nDate : this.getTimeZoneE8(8, date).format('yyyy-MM-dd'),
            end: eTime
        }
        return seTime
    }

 

本文地址:https://blog.csdn.net/qq_40595166/article/details/109236877