时间戳,标准时间之间的转化

一. 获取时间戳

方法一:Date.now()

 console.log(Date.now()) // 1701676212978

方法二:Date.parse()
Date.parse()将字符串或者时间对象直接转化成时间戳:

Date.parse(new Date()) // 1701676571000
Date.parse("2023/12/04 15:53") // 1701676380000

注意:不推荐这种办法,毫秒级别的数值被转化为000。

方法三:valueOf()

(new Date()).valueOf()  // 1701676753585

方法四:getTime()
通过原型方法直接获得当前时间的毫秒值,准确:

new Date().getTime() // 1701676803066

方法五:Number
将时间对象转化为一个number类型的数值,即时间戳:

Number(new Date()) // 1701676866824

二. 将时间戳转化为指定时间格式

  1. 默认格式:new Date(‘任意一个时间戳’)
new Date(Date.now())  // Mon Dec 04 2023 16:03:37 GMT+0800 (中国标准时间)
  1. 指定格式
const getTimeFormatter = (time: Date.now()) => {
  const date = new Date(time)

  // 获取年,月,日
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()

  // 获取时分秒
  const hour = date.getHours() >= 10 ? date.getHours() + '' : '0' + getHours()
  const minute = date.getMinutes() >= 10 ? date.getMinutes() + '' : '0' + getMinutes()
  const second = date.getSeconds() >= 10 ? date.getSeconds() + '' : '0' + getSeconds()

  return year + '年' + month + '月' + day + '日' + ' ' + hour + '时' + minute + '分' + second + '秒'
}

getTimeFormatter() // '2023年12月4日 16时29分53秒'

三. 将任意时间戳转化为具体时间长度

const formatterTime = (second) => {
  const y = Math.floor(second / 60 /60 / 24 / 365)  // 获取年数
  const yy = y < 1 ? '' : + y + '年'

  const d = Math.floor(second / 60 / 60 / 24 % 365)  // 获取天数
  const dd = d < 10 ? '0' + d : d

  const h = Math.floor(second / 60 / 60 % 24)  // 获取小时数
  const hh = h < 10 ? '0' + h : h

  const m = Math.floor(second / 60 % 60)  // 获取分钟数
  const mm = m < 10 ? '0' + m : m

  const s = Math.floor(second % 60)  // 获取分钟数
  const ss = s < 10 ? '0' + s : s

  return yy + dd + '天' + hh + '时' + mm + '分' + ss + '秒' 
}
formatterTime (Date.now()/1000)  // '53年350天09时05分22秒'

你可能感兴趣的:(前端,javascript,面试,时间戳)