格式化时间方法

日期格式转换

补零规则

function padLeftOneZero (str) {
  return ('0' + str).substr(str.length);
}

function padLeftTwoZero (str) {
  return ('00' + str).substr(str.length)
}

1、毫秒值格式化:xx月xx日 xx:xx:xx

/**
* @function 时间戳格式化
* @param(date): new Date()
* @param(fmt): 返回格式
*/
function formatDate (date, fmt) {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  }

  let o = {

    'M+': date.getMonth() + 1, // 月

    'd+': date.getDate(), // 日

    'h+': date.getHours(), // 时

    'm+': date.getMinutes(), // 分

    's+': date.getSeconds() // 秒

  }

  for (let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      let str = o[k] + ''

      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftTwoZero(str))
    }
  }

  return fmt
}

// for example
let date = new Date(1610553600000)
formatDate(date, 'MM月dd日 hh:mm') // 01月14日 00:00

2、获取当前月份yyyy-MM-dd格式

// 方法一:
function formatYear (date) {
  let y = date.getFullYear()  // 获取年

  let m = date.getMonth() + 1  // 获取月

  let d = date.getDate()  // 获取日

  return y + '年' + m + '月' + d + '日'  // 
};
formatYear(new Date()) // '2022年7月25日'

// 方法二:
function getNowDate(){
    var date = new Date()
    var year = date.getFullYear()
    var month = date.getMonth()
    var day = date.getDate()
    //月份需要+1,因为月份获取的是0-11
    return `${year}-${(month+1).toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`
}

3、返回今天/昨天/早期时间

function stampsToTime (millisecond) {
  let date = new Date(parseInt(millisecond))
  let todayYear = new Date().getFullYear() // 当前年
  let todayMonth = new Date().getMonth() + 1 // 当前月
  let todayDate = new Date().getDate() // 当前日

  let year = date.getFullYear() // 后台年
  let lastMonth = date.getMonth() + 1 // 后台月
  let lastDate = date.getDate() // 后台日

  let mo = padLeftOneZero(parseInt(lastMonth)) // 月
  let d = padLeftOneZero(parseInt(lastDate)) // 日
  let h = padLeftOneZero(parseInt(date.getHours())) // 时
  let m = padLeftOneZero(parseInt(date.getMinutes())) // 分

  if (year === todayYear) { // 同年
    if (lastMonth === todayMonth) { // 同月
      let comVal = todayDate - lastDate
      switch (comVal) {
        case 0: // 今天
          return h + ':' + m

        case 1: // 昨天
          return '昨天' + '\xa0\xa0' + h + ':' + m

        default: // 同月早期
          // return year + '-' + mo + '-' + d + '\xa0' + h + ':' + m
          return mo + '-' + d + '\xa0' + h + ':' + m
      }
    } else { // 其他月
      return mo + '-' + d + '\xa0' + h + ':' + m
    }
  } else { // 其他年份
    return year + '-' + mo + '-' + d + '\xa0' + h + ':' + m
  }
}

4、获取当前时间24小时制

function getNowTime(){
    var date = new Date()
    return `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`
}

5、使用ISO标准将 Date 对象转换为字符串

function filter(time) {
    // toISOString() 方法可以使用ISO标准将 Date 对象转换为字符串。
    return new Date(time * 1000).toISOString().substring(0, 10);
}
console.log(filter(1512023760)); // 2017-11-30

6、2021-03-31 00:00 => 1617120000000

// methods 1
+new Date("2021-03-31 00:00")

// methods 2 
new Date('2021-03-31 00:00').getTime()

// methods 3
new Date('2021-03-31 00:00').valueOf()

7、时区时间转本地时间

// methods 1
function utcToLocal(datestr) {
  let time = new Date(datestr).getTime();
  const date = new Date(time);
  const Y = date.getFullYear() + '-';
  const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '  ';
  const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  const m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  const s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
  const dateString = Y + M + D + h + m + s;
  return dateString
};

// methods 2
function utcToLacal(dateStr) {
	var date = new Date(datestr).toJSON();
	var yym = new Date(+new Date(date) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')
	return yym
} 

utcToLocal('2022-07-22T09:34:40.000+00:00') // '2022-07-22  17:34:40'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值