zoukankan      html  css  js  c++  java
  • js 时间处理方法

    格式化时间:

    var format = function (time) { 
            var y = time.getFullYear(); //getFullYear方法以四位数字返回年份
            var M = time.getMonth() + 1; // getMonth方法从 Date 对象返回月份 (0 ~ 11),返回结果需要手动加一
            var d = time.getDate(); // getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31)
            var h = time.getHours(); // getHours方法返回 Date 对象的小时 (0 ~ 23)
            var m = time.getMinutes(); // getMinutes方法返回 Date 对象的分钟 (0 ~ 59)
            var s = time.getSeconds(); // getSeconds方法返回 Date 对象的秒数 (0 ~ 59)
         m = m >= 10 ? m : "0" + m;
            s = s >= 10 ? s : "0" + s;
            return y + '-' + M + '-' + d + ' ' + h + ':' + m + ':' + s;
    }
    
    var time1 = format(new Date());
    function formatTime(time) {      
            var h = time.getHours(); // getHours方法返回 Date 对象的小时 (0 ~ 23)
            var m = time.getMinutes(); // getMinutes方法返回 Date 对象的分钟 (0 ~ 59)
            var s = time.getSeconds(); // getSeconds方法返回 Date 对象的秒数 (0 ~ 59)
            m = m >= 10 ? m : "0" + m;
            s = s >= 10 ? s : "0" + s;
            return h + ':' + m + ':' + s;
    }

    简化写法:

    var format = function (time) { 
          var date = new Date(+time + 8 * 3600 * 1000);
        	return date.toJSON().substr(0, 19).replace('T', ' ').replace(/-/g, '.');
    }
    var time1 = format(new Date());
    
    //Date的‘toJSON’方法返回格林威治时间的JSON格式字符串,转化为北京时间需要额外增加8个时区,然后把‘T’替换为空格,即是我们需要的时间格式,后面可以通过正则将日期分隔符换成任何想要的字符。
    //一元加操作符可以把任何数据类型转换成数字,所以获取时间对象对应毫秒数的另一个方法是+Date或Number(Date)
    

    获取当月最后一天:

    function getLastDayOfMonth (time) {
        var month = time.getMonth();
        time.setMonth(month+1);
        time.setDate(0);
        return time.getDate()
    }
    getLastDayOfMonth(new Date())
    //先月份加一,再取上个月的最后一天
    

     

    获取当前季度的第一天:

    function getFirstDayOfSeason (time) {
        var month = time.getMonth();
        if(month <3 ){
            time.setMonth(0);
        }else if(2 < month && month < 6){
            time.setMonth(3);
        }else if(5 < month && month < 9){
            time.setMonth(6);
        }else if(8 < month && month < 11){
            date.setMonth(9);
        }
        time.setDate(1);
        return time;
    }
    getFirstDayOfSeason(new Date())
    //先月份加一,再取上个月的最后一天
    

      

     获取中文星期:

    let time ="日一二三四五六".charAt(new Date().getDay());
    

      

    获取今天是当年的第几天:

    var time1 = Math.ceil(( new Date() - new Date(new Date().getFullYear().toString()))/(24*60*60*1000));
    
    //需要注意的是new Date()不设置具体时间的话new Date(2019)得到的不是0点而是8点 
    //Tue Jan 01 2019 08:00:00 GMT+0800 (中国标准时间)
    

      

    获取今天是当年的第几周:

    var week = Math.ceil(((new Date() - new Date(new Date().getFullYear().toString()))/(24*60*60*1000))/7);
    
    //在获取第几天的基础上除7,向上取整
    

     

    获取今年剩多少天:

    function restOfYear(time) {
        var nextyear = (time.getFullYear() + 1).toString();
        var lastday = new Date(new Date(nextyear)-1); //获取本年的最后一毫秒:
        console.log(lastday)
        var diff = lastday - time;  //毫秒数
        return Math.floor(diff / (1000 * 60 * 60 * 24));
    }
    restOfYear(new Data())
    //先取下一年第一秒,再减1毫秒。顺便思考一下为什么是Math.ceil,是Math.floor。
    

      

    计算两个时间的间隔:

    function diffTime(startDate,endDate,location) {
        var diff=new Date(endDate).getTime() - startDate;//时间差的毫秒数
    
        //计算出相差天数
        var days=Math.floor(diff/(24*3600*1000));
    
        //计算出小时数
        var leave1=diff%(24*3600*1000);    //计算天数后剩余的毫秒数
        var hours=Math.floor(leave1/(3600*1000));
    
        //计算相差分钟数
        var leave2=leave1%(3600*1000);        //计算小时数后剩余的毫秒数
        var minutes=Math.floor(leave2/(60*1000));
    
        //计算相差秒数
        var leave3=leave2%(60*1000);      //计算分钟数后剩余的毫秒数
        var seconds=Math.round(leave3/1000);
        if(location === "Day") {
           return returnStr = "还有" + days + "天";
        }else if(location === "Hours") {
           return returnStr = "还有" + (hours+days*24) + "小时";
        }else if(location === "Minutes") {
           return returnStr = "还有" + (minutes+(hours+days*24)*60) + "分钟";
        }else if(location === "Seconds") {
           return returnStr = "还有" + (seconds+(minutes+(hours+days*24)*60)*60) + "秒";
        }else{
            return returnStr = "还有" + days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒";
        }
    }
    console.log(diffTime(new Date(), '2019-8-19 16:00:00','Minutes'))
    //没有写的很复杂,方便各位修改拓展。
    

      

    计算指定时间间隔前后的日期:

    可用于时间追溯、活动预告等用途

    function GetDate(time,count) {   
        time.setDate(time.getDate() + count);//获取N天后的日期  
        var date = new Date(+time + 8 * 3600 * 1000);
            return date.toJSON().substr(0, 19).replace('T', ' ').replace(/-/g, '.');
    }  
    GetDate(new Date(),100)
    

     

     

    计算当周开始和结束时间:

    很常见的需求,可用来做签到等

    function getwholetWeek(now){
      var weekday = now.getDay();    // 获取当前是周几(周日:0)
      weekday = weekday === 0 ? 7 : weekday;
      var firstDay = GetDate(now,-weekday); //周日开始
      var lastDay = GetDate(now,7 - 1); //周六结束
      return {
        firstDay: firstDay,
        lastDay: lastDay
      };
    }
    
    console.log(getwholetWeek(new Date()))
    //调用前面日期间隔函数,可根据情况改成,周一开始,周日结束
    

      

     

  • 相关阅读:
    JS判断数组中是否有重复元素的方法
    根据类名找到元素
    JS获取页面元素并修改
    JS实现会动的小车
    动态规划------最长公共子串(连续)
    动态规划------最长递增子序列
    买卖股票的最佳时期
    操作系统清华大学版笔记(十一)死锁、银行家算法和进程间通信(直接通信、间接通信)
    128 最长连续序列
    链表------删除有序单链表中重复的节点
  • 原文地址:https://www.cnblogs.com/xiejn/p/11823917.html
Copyright © 2011-2022 走看看