JS格式化时间方法

格式化时间的方法

如果我们点击获取的是没有格式化后的时间,这时候我们需要将时间格式化一下,比如Fri Oct 01 2021 08:00:00 GMT+0800 (中国标准时间)这种的格式,可以转化为yyyy-mm-dd hh:mm:ss的格式

formatDateTime(date) {
            if (date == "" || !date) {
                return "";
            }
            var date = new Date(date);
            var y = date.getFullYear();
            var m = date.getMonth() + 1;
            m = m < 10 ? ('0' + m) : m;
            var d = date.getDate();
            d = d < 10 ? ('0' + d) : d;
            var h = date.getHours();
            h = h < 10 ? ('0' + h) : h;
            var minute = date.getMinutes();
            minute = minute < 10 ? ('0' + minute) : minute;
            var second = date.getSeconds();
            second = second < 10 ? ('0' + second) : second;
            return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second; 
        },

获取当前的时间

Vue.prototype.currentTime = function(){
     var time = new Date();
      var Y = time.getFullYear();
      var M = time.getMonth();
      M = (M+1) < 10 ? '0' + (M+1) : (M+1);  //这里月份加1的原因是因为月份是从0开始的,0-11月,加1让月份从1-12月区间。
      var d = time.getDate();
      d = d < 10 ? '0' + d : d;
      var h = time.getHours();
      h = h < 10 ? '0' + h : h;
      var m = time.getMinutes();
      m = m < 10 ? '0' + m : m;
      var s = time.getSeconds();
      s = m < 10 ? '0' + m : m;
      return Y+"-"+M+"-"+d+" "+ h + ":" + m + ":" + s;
 }

获取当天的零时和当天现在的时间推迟一个小时(推迟几个小时都可,场景而定)

let date1 = new Date(new Date().toLocaleDateString());  //返回当前的返回一个表示该日期对象日期部分的字符串,例如:2021/8/20
                console.log('本日开始的时间戳tolocal',new Date().toLocaleDateString())
                console.log('本日开始的时间戳',date1)
                // let date2 = new Date(new Date());
                let date2 = new Date(new Date().getTime() - 1 * 60 * 60 * 1000);  //getTime()获取现在到1970年1月1日的毫秒数,并提前1个小时(1 * 60 * 60 * 1000)
                console.log('new Date().getTime()',new Date().getTime())
                console.log('new Date().getTime() - 1 * 60 * 60 * 1000',new Date().getTime() - 1 * 60 * 60 * 1000)
                console.log('本日结束的时间戳',date2)
                //new Date()方法返回当日的日期和时间,但是返回的是中国标准时间,我们需要进行格式化中国标准时间,返回的例如是这样的Fri Aug 20 2021 00:00:00 GMT+0800 (中国标准时间)
                this.ruleForm.startTime = this.formatDateTime(date1)
                this.ruleForm.endTime = this.formatDateTime(date2)
                
                //格式化时间
                formatDateTime(date) {
            if (date == "" || !date) {
              return "";
            }
            var date = new Date(date);
            var y = date.getFullYear();
            var m = date.getMonth() + 1;
            m = m < 10 ? ('0' + m) : m;
            var d = date.getDate();
            d = d < 10 ? ('0' + d) : d;
            var h = date.getHours();
            h = h < 10 ? ('0' + h) : h;
            var minute = date.getMinutes();
            minute = minute < 10 ? ('0' + minute) : minute;
            var second = date.getSeconds();
            second = second < 10 ? ('0' + second) : second;
            return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
          },

获取本周的第一天的零时和本周现在的时间推迟一个小时(推迟几个小时都可,场景而定)

var nowDayOfWeek = now.getDay(); // 今天本周的第几天
      		var nowDay = now.getDate(); // 当前日
                    var day = nowDayOfWeek || 7;
                    console.log('day',day)  //返回的这周是星期几
                    console.log('nowDay',nowDay) //当前日20
                    this.ruleForm.startTime =  this.formatDateTime(new Date(now.getFullYear(), nowMonth, nowDay + 1 - day)); //将当年、当月、和当周的第一天放在new Date()方法格式化
                    console.log('本周开始的时间',new Date(now.getFullYear(), nowMonth, nowDay + 1 - day))
                    console.log('本周开始的时间戳',this.ruleForm.startTime)
                    // this.ruleForm.endTime = this.formatDateTime(new Date(new Date()))
                    this.ruleForm.endTime = this.formatDateTime(new Date(new Date().getTime() - 1 * 60 * 60 * 1000)) //获取当天的时间,提前一个小时
                    console.log('本周结束的时间戳',this.ruleForm.endTime)在这里插入代码片

解析:new Date()中是可以传递形参的,并且为了尽可兼容所有浏览器形参的格式是有要求的
可以识别

new Date('2014-10-01')
new Date('2014/10/01')
new Date('2014,10,01') //返回的都是中国标准的时间

获取本月的第一天的零时和本月现在的时间推迟一个小时(推迟几个小时都可,场景而定)

var nowMonth = now.getMonth(); // 当前月
                var nowYear = now.getYear(); // 当前年
                var monthStartDate = new Date(nowYear, nowMonth, 1);
                this.ruleForm.startTime = this.formatDateTime(monthStartDate);
                console.log('本月开始的时间戳',this.ruleForm.startTime)
                // this.ruleForm.endTime = this.formatDateTime(new Date(new Date()))
                this.ruleForm.endTime = this.formatDateTime(new Date(new Date().getTime() - 1 * 60 * 60 * 1000))
                console.log('本月结束的时间戳',this.ruleForm.endTime)

获取当天的零时和当天现在的时间

function getToday(type, dates) {
      var now = new Date()
      var nowTime = now.getTime()
      var day = now.getDay()
      var hour = now.getHours()
      var minute = now.getMinutes()
      var ss = now.getSeconds()
      var longTime = 24 * 60 * 60 * 1000 //一天的毫秒数
      var n = longTime * 24 * 0
      if (type == 's') {
        var dd =
          nowTime - n - hour * 60 * 60 * 1000 - minute * 60 * 1000 - ss * 1000 //获取今日零时
      }
      if (type == 'e') {
        var dd = nowTime  //获取当前的时间
      }
      function p(s) {
        return s < 10 ? '0' + s : s
      }
      dd = new Date(dd)
      var y = dd.getFullYear()
      var m = dd.getMonth() + 1
      var d = dd.getDate()
      var hh = dd.getHours()
      var mm = dd.getMinutes()
      var ss = dd.getSeconds()
      var day =
        y + '-' + p(m) + '-' + p(d) + ' ' + p(hh) + ':' + p(mm) + ':' + p(ss)
      return day
    }
    //调用本日时间
    console.log(getToday('s'))  //2021-07-29 00:00:00
    console.log(getToday('e'))  //2021-07-29 11:28:59

获取本周的周一到周日本周的时间

    function getMonday(type, dates) {
      var now = new Date()
      var nowTime = now.getTime()
      var day = now.getDay()
      day = day === 0 ? 7 : day
      var longTime = 24 * 60 * 60 * 1000
      var n = longTime * 7 * (dates || 0)
      if (type == 's') {
        var dd = nowTime - (day - 1) * longTime + n
      }
      if (type == 'e') {
        var dd = nowTime + (7 - day) * longTime + n
      }
      function p(s) {
        return s < 10 ? '0' + s : s
      }
      dd = new Date(dd)
      var y = dd.getFullYear()
      var m = dd.getMonth() + 1
      var d = dd.getDate()
      var day = y + '-' + p(m) + '-' + p(d)
      return day
    }
    console.log(getMonday('s'))  //2021-07-26
    console.log(getMonday('e'))  //2021-08-01

你可能感兴趣的:(前端,javascript,前端,开发语言)