<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • 實現js當前時間加一天(js中國標準時間格式轉換)


    前言

    雖然現在處理日期方面已經有了很成熟的也很好用的庫,例如(momentjs和date-fns),但是在實際開發中,我們有時候可能并不需要整個庫。所以我就在下面整理了在前端開發時對日期時間的各種操作,也算是比較全的了。其中一部分來自自己,還有一部分來源于我們萬能的網友~

    獲取當前時間戳

    var timestamp = Date.parse(new  Date()); //精確到秒
    var timestamp = (new Date()).valueOf();  //精確到毫秒
    var timestamp = new Date().getTime(); //精確到毫秒
    var timestamp = +new Date();
    var timestamp = Date.now();

    獲取指定時間戳

    var timestamp = (new Date(" 2019/10/24 08:00:00")).getTime();
    var timestamp = (new Date(" 2019-10-24 08:00:00")).getTime();

    獲取當前時間的前一天/后一天的時間戳

    var timestamp = +new Date() - 24*60*60*1000;
    var timestamp = +new Date() + 24*60*60*1000;

    今日零點時間戳

    var timestamp = new Date(new Date().toLocaleDateString()).getTime();

    今日最晚時間 23:59:59的時間戳

    let timestamp = new Date(new Date().toLocaleDateString()).getTime()+24*60*60*1000-1;

    獲取當前時間的n天后的時間戳

    /**
     * @param {number} n 天數
     * @returns {Number} 返回值為時間毫秒值
     */
    function toNextTimes(n){
        let timestamp = +new Date() + n * 86400000;
        return timestamp;
    }

    本周第一天

    /***
     *  @return {*} WeekFirstDay 返回本周第一天的時間
     */
    function showWeekFirstDay(){
        let Nowdate=new Date();
        let WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
        return WeekFirstDay;
    }

    本周最后一天

    /***
     *  @return {*} WeekLastDay 返回本周最后一天的時間
     */
    function showWeekLastDay(){
        let Nowdate=new Date();
        let WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
        let WeekLastDay=new Date((WeekFirstDay/1000+6*86400)*1000);
        return WeekLastDay;
    }

    本月第一天

    /***
     *  @return {*} MonthFirstDay 返回本月第一天的時間
     */
    function showMonthFirstDay(){
        let Nowdate=new Date();
        let MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth());
        return MonthFirstDay;
    }

    本月最后一天

    /***
     *  @return {*} MonthLastDay 返回本月最后一天的時間
     */
    function showMonthLastDay(){
        let Nowdate=new Date();
        let MonthNextFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth()+1);
        let MonthLastDay=new Date(MonthNextFirstDay-86400000);
        return MonthLastDay;
    }

    日期轉時間戳

    /**
     * @param {String} time - 日期字符串,如'2018-8-8','2018,8,8','2018/8/8'
     * @returns {Number} 返回值為時間毫秒值
     */
    function timeToTimestamp (time) {
        let date = new Date(time);
        let timestamp = date.getTime();
        return timestamp;
    }

    格式化當前時間

    /***
     *  @return {string} timeText 返回系統時間字符串
     */
    function getdataTimeSec() {
        let time = new Date();
        let weekDay;
        let year = time.getFullYear();
        let month = time.getMonth() + 1;
        let day = time.getDate();
        //獲取時分秒
        let h = time.getHours();
        let m = time.getMinutes();
        let s = time.getSeconds();
        //檢查是否小于10
        h = check(h);
        m = check(m);
        s = check(s);
        let now_day = time.getDay();
        switch (now_day) {
            case 0: {
                weekDay = "星期日"
            }
                break;
            case 1: {
                weekDay = "星期一"
            }
                break;
            case 2: {
                weekDay = "星期二"
            }
                break;
            case 3: {
                weekDay = "星期三"
            }
                break;
            case 4: {
                weekDay = "星期四"
            }
                break;
            case 5: {
                weekDay = "星期五"
            }
                break;
            case 6: {
                weekDay = "星期六"
            }
                break;
            case 7: {
                weekDay = "星期日"
            }
                break;
        }
        let timeText = year + "年" + month + "月" + day + "日  " + " " + weekDay + " " + h + ":" + m +":" + s;
    
        return timeText
    }

    返回指定時間戳之間的時間間隔

    /**
     *  @param {*} startTime 開始時間的時間戳
     *  @param {*} endTime 結束時間的時間戳
     *  @return {string} str 返回時間字符串
     */
    function getTimeInterval(startTime, endTime) {
        let runTime = parseInt((endTime - startTime) / 1000);
        let year = Math.floor(runTime / 86400 / 365);
        runTime = runTime % (86400 * 365);
        let month = Math.floor(runTime / 86400 / 30);
        runTime = runTime % (86400 * 30);
        let day = Math.floor(runTime / 86400);
        runTime = runTime % 86400;
        let hour = Math.floor(runTime / 3600);
        runTime = runTime % 3600;
        let minute = Math.floor(runTime / 60);
        runTime = runTime % 60;
        let second = runTime;
        let str = '';
        if (year > 0) {
            str = year + '年';
        }
        if (year <= 0 && month > 0) {
            str = month + '月';
        }
        if (year <= 0 && month <= 0 && day > 0) {
            str = day + '天';
        }
        if (year <= 0 && month <= 0 && day <= 0 && hour > 0) {
            str = hour + '小時';
        }
        if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute > 0) {
            str = minute + '分鐘';
        }
        if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute <= 0 && second > 0) {
            str += second + '秒';
        }
        str += '前';
        return str;
    }

    按類型格式化日期

    /**
     * @param {*} date 具體日期變量
     * @param {string} dateType 需要返回類型
     * @return {string} dateText 返回為指定格式的日期字符串
     */
    function getFormatDate(date, dateType) {
        let dateObj = new Date(date);
        let month = dateObj.getMonth() + 1;
        let strDate = dateObj.getDate();
        let hours = dateObj.getHours();
        let minutes = dateObj.getMinutes();
        let seconds = dateObj.getSeconds();
        if (month >= 1 && month <= 9) {
            month = "0" + month;
        }
        if (strDate >= 0 && strDate <= 9) {
            strDate = "0" + strDate;
    
        }
        if (hours >= 0 && hours <= 9) {
            hours = "0" + hours
        }
        if (minutes >= 0 && minutes <= 9) {
            minutes = "0" + minutes
        }
        if (seconds >= 0 && seconds <= 9) {
            seconds = "0" + seconds
        }
    
        let dateText = dateObj.getFullYear() + '年' + (dateObj.getMonth() + 1) + '月' + dateObj.getDate() + '日';
        if (dateType == "yyyy-mm-dd") {
            dateText = dateObj.getFullYear() + '-' + (dateObj.getMonth() + 1) + '-' + dateObj.getDate();
        }
        if (dateType == "yyyy.mm.dd") {
            dateText = dateObj.getFullYear() + '.' + (dateObj.getMonth() + 1) + '.' + dateObj.getDate();
        }
        if (dateType == "yyyy-mm-dd MM:mm:ss") {
            dateText = dateObj.getFullYear() + '-' + month + '-' + strDate + ' ' + hours + ":" + minutes + ":" + seconds;
        }
        if (dateType == "mm-dd MM:mm:ss") {
            dateText = month + '-' + strDate + ' ' + hours + ":" + minutes + ":" + seconds;
        }
        if (dateType == "yyyy年mm月dd日 MM:mm:ss") {
            dateText = dateObj.getFullYear() + '年' + month + '月' + strDate + '日' + ' ' + hours + ":" + minutes + ":" + seconds;
        }
        return dateText;
     }

    判斷是否為閏年

    /**
    * @param  {number} year 要判斷的年份
    * @return {boolean} 返回布爾值
    */
    function leapYear(year) {
        return !(year % (year % 100 ? 4 : 400));
    }

    返回兩個年份之間的閏年

    /**
    * @param  {number} start 開始年份
    * @param  {number} end 結束年份
    * @return {array}  arr 返回符合閏年的數組
    */
    function leapYears(start, end) {
        let arr = [];
        for (var i=start; i<end; i++) {
            if ( leapYear(i) ) {
                arr.push(i)
            }
        }
        return arr
    }

    判斷時間格式是否有效

    /**
    * 短時間,如 (10:24:06)
    * @param  {string} str 需要驗證的短時間
    * @return {boolean} 返回布爾值
    */
    function isTime(str) {
        var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
        if (a == null) { return false; }
        if (a[1] >= 24 || a[3] >= 60 || a[4] >= 60) {
            return false
        }
        return true;
    }
    
    /**
    * 短日期,形如 (2019-10-24)
    * @param  {string} str 需要驗證的短時間
    * @return {boolean} 返回布爾值
    */
    function strDateTime(str){
        var result = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
        if (result == null) return false;
        var d = new Date(result[1], result[3] - 1, result[4]);
        return (d.getFullYear() == result[1] && d.getMonth() + 1 == result[3] && d.getDate() == result[4]);
    }
    
    /**
    * 長日期時間,形如 (2019-10-24 10:24:06)
    * @param  {string} str 需要驗證的短時間
    * @return {boolean} 返回布爾值
    */
    function strDateTime(str){
        var result = str.match(/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
        if (result == null) return false;
        var d = new Date(result[1], result[3] - 1, result[4], result[5], result[6], result[7]);
        return (d.getFullYear() == result[1] && (d.getMonth() + 1) == result[3] && d.getDate() == result[4] && d.getHours() == result[5] && d.getMinutes() == result[6] && d.getSeconds() == result[7]);
    }

    驗證日期大小

    /**
    * 例:"2019-10-24" 和 "2019-10-25"
    * @param  {string} d1需要驗證的日期1
    * @param  {string} d2需要驗證的日期2
    * @return {boolean} 返回布爾值
    */
    function compareDate(d1, d2) {
        return ((new Date(d1.replace(/-/g, "\/"))) < (new Date(d2.replace(/-/g, "\/"))));
    }

    驗證一個日期是不是今天

    /**
    * @param  {string} val 需要驗證的日期
    * @return {boolean} 返回布爾值
    */
    function isToday(val){
        return new Date().toLocaleDateString() == new Date(val).toLocaleDateString();
    }

    驗證傳入的日期是否是昨天

    /**
    * @param  {string} val 需要驗證的日期
    * @return {boolean} 返回布爾值
    */
    function isYesterday(val) {
        var today = new Date();
        var yesterday = new Date(now - 1000 * 60 * 60 * 24);
        var test = new Date(val);
        if (yesterday.getYear() === test.getYear() && yesterday.getMonth() === test.getMonth() && yesterday.getDate() === test.getDate()) {
            return true;
        } else {
            return false;
        }
    }

    設置幾天后的日期

    /**
    * @param  {string} date 起始日期
    * @param  {number} day 向后的天數
    * @return {string} 返回想要得到的日期
    */
    function convertDate (date, day) {
        let tempDate = new Date(date);
        tempDate.setDate(tempDate.getDate()+day);
        let Y = tempDate.getFullYear();
        let M = tempDate.getMonth()+1 < 10 ? '0'+(tempDate.getMonth()+1) : tempDate.getMonth()+1;
        let D = tempDate.getDate() < 10 ? '0'+(tempDate.getDate()) : tempDate.getDate();
        let result = Y + "-" + M + "-" + D
        return result;
    }

    寫在最后

    若上面函數有錯誤,或者還有工作中遇到,但是上面沒有寫到的,歡迎指出來~

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费