一. 获取时间戳
方法一: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
二. 将时间戳转化为指定时间格式
- 默认格式:new Date(‘任意一个时间戳’)
new Date(Date.now()) // Mon Dec 04 2023 16:03:37 GMT+0800 (中国标准时间)
- 指定格式
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秒'