日期时间格式化转换,获取指定日期集合

  1. 时间戳转换日期
  2. 获取n个月之后的日期
  3. 获取往前一年的年月数组
  4. 获取本月第一天和最后一天
  5. 获取当前时间
  6. 获取当前日期前后几天

时间戳转换日期

/*
 * 日期格式化
 * params
 *   num(必选)     时间戳,或者是所有可以转换成时间的字符串或数字
 *   format(可选)  传入的字符串,根据此字符串替换对应匹配到的字母(Y、M、D、h、m、s)为对应的值,例:
 *                 "Y-M-D h:m:s"=>"2019-11-01 01:01:01"(不传format时默认输出)
 *                 "Y-M-D"=>"2019-11-01"
 *                 "h:m:s"=>"01:01:01"
 *                 "y/m/s"=>"2019/11/01"*/
function filterTimestamp(num, format) {
  if (num == null || !num) return ""
  let date = new Date(num)
  let y = date.getFullYear()
  let m = date.getMonth() + 1
  m = m < 10 ? "0" + m : m
  let d = date.getDate()
  d = d < 10 ? "0" + d : d
  let h = date.getHours()
  h = h < 10 ? "0" + h : h
  let minute = date.getMinutes()
  minute = minute < 10 ? "0" + minute : minute
  let second = date.getSeconds()
  second = second < 10 ? "0" + second : second
  if (!format) {
    return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + second
  } else {
    return format
      .replace("Y", y)
      .replace("M", m)
      .replace("D", d)
      .replace("h", h)
      .replace("m", minute)
      .replace("s", second)
  }
}

获取n个月之后的日期

/**
 * @param  {String}  date 需要累加月份的日期,如2020/8/19
 * @param  {Number}  n    3
 * @return {String}       转换的结果2020/11/19
 */
function getFutureTime(date, n = 0) {
  var d = new Date(date)
  // 因为getMonth()获取的月份的值只能在0~11之间所以我们在进行setMonth()之前先给其减一
  d.setMonth(d.getMonth() + n)
  var yy = d.getFullYear()
  var MM = d.getMonth() + 1
  var dd = d.getDate()
  var hh = d.getHours()
  var mm = d.getMinutes()
  var ss = d.getSeconds()
  if (MM < 10) {
    MM = "0" + MM
  }
  if (dd < 10) {
    dd = "0" + dd
  }
  if (hh < 10) hh = "0" + hh
  if (mm < 10) mm = "0" + mm
  if (ss < 10) ss = "0" + ss
  return yy + "-" + MM + "-" + dd + " " + hh + ":" + mm + ":" + ss
}

获取往前一年的年月数组

/**
 * @param  {String} data     需要倒推的月数
 * @return {Array}           年月的结果 如['2021年08月','2021年07月','2021年06月','2021年05月','2021年04月','2021年03月','2021年02月','2021年01月','2020年12月','2020年11月','2020年10月','2020年09月']
 */
function lastYearMonth(data) {
  var result = []
  for (var i = 0; i < data; i++) {
    var d = new Date()
    d.setDate(1)
    d.setMonth(d.getMonth() - i)
    var m = d.getMonth() + 1
    m = m < 10 ? "0" + m : m
    //在这里可以自定义输出的日期格式
    result.push(d.getFullYear() + "年" + m + "月")
  }
  return result
}

获取本月第一天和最后一天

/**
 * 获取本月第一天
 */
function getNowMonth() {
  let date = new Date()
  var y = date.getFullYear()
  var m = date.getMonth() + 1
  m = m < 10 ? "0" + m : m
  var d = "01"
  return y + "-" + m + "-" + d
}
/**
 * 获取本月最后一天
 */
function getNowMonthLast() {
  // 获取当月最后一天
  const lastDay = new Date(
    new Date().getFullYear(),
    new Date().getMonth() + 1,
    0
  )
  return filterTimestamp(lastDay, "Y-M-D")
}

获取当前时间

/*
 * @return {Date}       返回2019-11-01 01:01:01
 */
function getNowTime() {
  let yy = new Date().getFullYear()
  let mm = new Date().getMonth() + 1
  let dd = new Date().getDate()
  let hh = new Date().getHours()
  let mf =
    new Date().getMinutes() < 10
      ? "0" + new Date().getMinutes()
      : new Date().getMinutes()
  let ss =
    new Date().getSeconds() < 10
      ? "0" + new Date().getSeconds()
      : new Date().getSeconds()
  return yy + "-" + mm + "-" + dd + "  " + hh + ":" + mf + ":" + ss
}

获取当前日期前后几天

/**
 * @param  {Number}  time 需要添加或减少的天数
 * @return {Number}       time为正数表示往前推几天,负数表示往后加几天
 */
function getTime(time) {
  const now = new Date()
  if (time >= 0) {
    return formatDate(new Date(now.setDate(now.getDate() - time)))
  } else {
    return formatDate(new Date(now.setDate(now.getDate() + Math.abs(time))))
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值