JS 之 操作 Date 对象

Date - JavaScript | MDN

目录

Date - JavaScript | MDN

一. 创建Date对象

二. dateString时间的表示方式 

RFC 2822 标准 

ISO 8601 标准 

三. 常用时间获取方法 

四. 时间设置方法

五. 获取Unix时间戳 

六. 封装方法

1 - 把时间的字符串格式化/把data时间格式化

2 - object格式的时间转化为yyyyMMddHHmmss的时间格式(参数1:时间信息,参数2:需要转换的形式)

3 - 获取当前00--23点的时间(返回数组00--23点)(object)

4 - 获取当前00--23点的时间(返回数组00--23点)(string)

5 - 获取当月的第一天到当前日期 - [yyyymmddhhmmss,yyyymmddhhmmss]

6 - 获取当月一号到进入的信息(object)

7 - 时间戳转换为标准时间

8 - 获取前几天的日期  

9 - 获取前几个月的日期

10 - 获取近几天的日期 ,返回数组['03.02','03.03',...]

11 - 获取获取最近一年(12个月)的月份


Date - JavaScript | MDN

一. 创建Date对象

二. dateString时间的表示方式 

日期的表示方式有两种:RFC 2822 标准 或者 ISO 8601 标准

RFC 2822 标准 

默认打印的时间格式是RFC 2822标准的

ISO 8601 标准 

  • YYYY:年份,0000 ~ 9999
  • MM:月份,01 ~ 12 
  • DD:日,01 ~ 31
  • T:分隔日期和时间,没有特殊含义,可以省略
  • HH:小时,00 ~ 24
  • mm:分钟,00 ~ 59
  • ss:秒,00 ~ 59
  • .sss:毫秒
  • Z:时区

三. 常用时间获取方法 

  • getFullYear():获取年份(4 位数)
  • getMonth():获取月份,从 0 到 11
  • getDate():获取当月的具体日期,从 1 到 31
  • getHours():获取小时
  • getMinutes():获取分钟
  • getSeconds():获取秒钟
  • getMilliseconds():获取毫秒
  • getDay():获取一周中的第几天,从 0(星期日)到 6(星期六)

四. 时间设置方法

  • setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
  • setMonth() 设置 Date 对象中月份 (0 ~ 11)。
  • setFullYear() 设置 Date 对象中的年份(四位数字)。
  • setYear() 请使用 setFullYear() 方法代替。
  • setHours() 设置 Date 对象中的小时 (0 ~ 23)。
  • setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
  • setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
  • setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
  • setTime() 以毫秒设置 Date 对象。

五. 获取Unix时间戳 

Unix 时间戳:它是一个整数值,表示自1970年1月1日00:00:00 UTC以来的毫秒数

  • 方式一:new Date().getTime()
  • 方式二:new Date().valueOf()
  • 方式三:+new Date()
  • 方式四:Date.now() 

获取到Unix时间戳之后,我们可以利用它来测试代码的性能

六. 封装方法

1 - 把时间的字符串格式化/把data时间格式化

例如  “20200212163028” => 2020-02-12 16:30:28        

changeTimeFn(time) {
      let newTime = "";
      if (!time) {
        return "";
      }
      if (typeof time == "object") {
        time = new Date(time);
        let y = time.getFullYear();
        let m = time.getMonth() + 1;
        let d = time.getDate();
        let h = time.getHours();
        let min = time.getMinutes();
        let s = time.getSeconds();
        m = m - 0 < 10 ? "0" + m : m;
        d = d - 0 < 10 ? "0" + d : d;
        h = h - 0 < 10 ? "0" + h : h;
        min = min - 0 < 10 ? "0" + min : min;
        s = s - 0 < 10 ? "0" + s : s;
        newTime = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + s;
        return newTime;
      } else if (time.length > 12) {
        newTime =
          time.slice(0, 4) +
          "-" +
          time.slice(4, 6) +
          "-" +
          time.slice(6, 8) +
          " " +
          time.slice(8, 10) +
          ":" +
          time.slice(10, 12) +
          ":" +
          time.slice(12, 14);
      } else if (time.length > 10) {
        newTime =
          time.slice(0, 4) +
          "-" +
          time.slice(4, 6) +
          "-" +
          time.slice(6, 8) +
          " " +
          time.slice(8, 10) +
          ":" +
          time.slice(10, 12);
      } else if (time.length > 8) {
        newTime =
          time.slice(0, 4) +
          "-" +
          time.slice(4, 6) +
          "-" +
          time.slice(6, 8) +
          " " +
          time.slice(8, 10);
      } else {
        newTime =
          time.slice(0, 4) + "-" + time.slice(4, 6) + "-" + time.slice(6, 8);
      }
      return newTime;
    },

2 - object格式的时间转化为yyyyMMddHHmmss的时间格式(参数1:时间信息,参数2:需要转换的形式)

const getStringTime = (date, type) => {
  let newDate = ''
  if (date !== '') {
    let year = date.getFullYear().toString()
    let mon = date.getMonth() + 1
    mon = mon.toString().length === 2 ? mon : '0' + mon
    let day = date.getDate()
    day = day.toString().length === 2 ? day : '0' + day
    let hours = date.getHours()
    hours = hours.toString().length === 2 ? hours : '0' + hours
    let min = date.getMinutes()
    min = min.toString().length === 2 ? min : '0' + min
    let se = date.getSeconds()
    se = se.toString().length === 2 ? se : '0' + se

    let a = ['日', '一', '二', '三', '四', '五', '六']
    let week = new Date().getDay()
    if (type === 'all') {
      newDate = `${year}${mon}${day}${hours}${min}${se}`
    } else if (type == 'allEnd') {
      newDate = `${year}${mon}${day}235959`
    } else if (type == 'ymd') {
      newDate = `${year}${mon}${day}`
    } else if (type == 'ym') {
      newDate = `${year}${mon}`
    } else if (type === 'year') {
      newDate = year
    } else if (type === 'mon') {
      newDate = mon
    } else if (type === 'day') {
      newDate = day
    } else if (type === 'week') {
      newDate = a[week]
    } else if (type === 'hours') {
      newDate = hours
    } else if (type === 'min') {
      newDate = min
    } else if (type === 'se') {
      newDate = se
    }
  }
  return newDate
}

3 - 获取当前00--23点的时间(返回数组00--23点)(object)

const getCurOneDayDate = () => {
  let curDate = new Date()
  let newDate = new Date(
    parseInt(getStringTime(curDate, 'year')),
    parseInt(getStringTime(curDate, 'mon') - 1),
    parseInt(getStringTime(curDate, 'day')),
    parseInt('00'), parseInt('00'), parseInt('00')
  )
  let endDate = new Date(
    parseInt(getStringTime(curDate, 'year')),
    parseInt(getStringTime(curDate, 'mon') - 1),
    parseInt(getStringTime(curDate, 'day')),
    parseInt('23'), parseInt('59'), parseInt('59')
  )
  return [newDate, endDate]
}

4 - 获取当前00--23点的时间(返回数组00--23点)(string)

const getCurOneDayStrArr = () => {

  let curDate = new Date()

  let startDate = getStringTime(curDate, 'year') + getStringTime(curDate, 'mon') + getStringTime(curDate, 'day') + '000000'

  let endDate = getStringTime(curDate, 'year') + getStringTime(curDate, 'mon') + getStringTime(curDate, 'day') + '235959'

  return [startDate, endDate]

}

5 - 获取当月的第一天到当前日期 - [yyyymmddhhmmss,yyyymmddhhmmss]

const getCurMonStrArr = () => {
  let curDate = new Date()
  let startDate = getStringTime(curDate, 'year') + getStringTime(curDate, 'mon') + '01' + '000000'
  let endDate = getStringTime(curDate, 'all').substr(0, 8) + '235959'
  return [startDate, endDate]
}

6 - 获取当月一号到进入的信息(object)

const getCurOneMonthDate = () => {

  let curDate = new Date()

  let newDate = new Date(

    parseInt(getStringTime(curDate, 'year')),

    parseInt(getStringTime(curDate, 'mon') - 1),

    parseInt('01'),

    parseInt('00'), parseInt('00'), parseInt('00')

  )

  let endDate = new Date(

    parseInt(getStringTime(curDate, 'year')),

    parseInt(getStringTime(curDate, 'mon') - 1),

    parseInt(getStringTime(curDate, 'day')),

    parseInt('23'), parseInt('59'), parseInt('59')

  )

  return [newDate, endDate]

}

7 - 时间戳转换为标准时间

const FormData = (date) => {
    let s = new Date(date)
    let y = s.getFullYear()
    let m = (s.getMonth() + 1) < 10 ? '0' + (s.getMonth() + 1) : (s.getMonth() + 1)
    let dd = s.getDate() < 10 ? '0' + s.getDate() : s.getDate()
    let hh = s.getHours() < 10 ? '0' + s.getHours() : s.getHours()
    let mm = s.getMinutes() < 10 ? '0' + s.getMinutes() : s.getMinutes()
    let ss = s.getSeconds() < 10 ? '0' + s.getSeconds() : s.getSeconds()
    let enddate = y + '-' + m + '-' + dd + ' ' + hh + ':' + mm + ":" + ss
    return enddate
}

8 - 获取前几天的日期  

//7   获取最近7天数据
const getLateDay = (day) => {
  let today = new Date();
  let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
  today.setTime(targetday_milliseconds);

  let tYear = today.getFullYear();
  let tMonth = today.getMonth() + 1;
  let tDate = today.getDate();
  if (tMonth.toString().length == 1) {
    tMonth = "0" + tMonth;
  }
  if (tDate.toString().length == 1) {
    tDate = "0" + tDate;
  }
  return '' + tYear + tMonth + tDate;
}

9 - 获取前几个月的日期

const getLateMonthDate = (month) => {
  let curDate = new Date();
  let newDate = new Date(
    parseInt(getStringTime(curDate, "year")),
    parseInt(getStringTime(curDate, "mon") - month - 1),
    parseInt(getStringTime(curDate, "day")),
    parseInt("00"),
    parseInt("00"),
    parseInt("00")
  );
  let endDate = new Date(
    parseInt(getStringTime(curDate, "year")),
    parseInt(getStringTime(curDate, "mon") - 1),
    parseInt(getStringTime(curDate, "day")),
    parseInt("23"),
    parseInt("59"),
    parseInt("59")
  );
  return [newDate, endDate];
}

10 - 获取近几天的日期 ,返回数组['03.02','03.03',...]

//获取当前日期前几天的信息
    daysAgo(time) {
      let curDate = new Date().getTime();
      let dayAgo = [];
      for (let i = time; i > 0; i--) {
        let newDate = new Date(curDate - 24 * 60 * 60 * 1000 * i);
        dayAgo.push(
          this.getStringTime(newDate, "mon") +
            "/" +
            this.getStringTime(newDate, "day")
        );
      }
      return dayAgo;
    },

["05/10", "05/11", "05/12", "05/13", "05/14", "05/15", "05/16"]

11 - 获取获取最近一年(12个月)的月份

//获取获取最近一年(12个月)的月份
const monthAgo = () => {
  let dataArr = [];
  let data = new Date();
  let year = data.getFullYear();
  data.setMonth(data.getMonth(), 1); //获取到当前月份,设置月份
  for (let i = 0; i < 12; i++) {
    data.setMonth(data.getMonth() - 1); //每次循环一次 月份值减1
    let m = data.getMonth() + 1;
    m = m < 10 ? "0" + m : m;
    dataArr.push(data.getFullYear() + "-" + m);
  }
  return dataArr.reverse();
}

猜你喜欢

转载自blog.csdn.net/a15297701931/article/details/125830260