5种获取JavaScript时间戳函数的方法
一、JavasCRIPT时间转时间戳
JavaScript获得时间戳的方法有五种,后四种都是通过实例化时间对象new Date() 来进一步获取当前的时间戳,JavaScript处理时间主要使用时间对象Date。
方法一:Date.now()
Date.now()可以获得当前的时间戳:
console.log(Date.now()) //1642471441587
方法二:Date.parse()
Date.parse()将字符串或者时间对象直接转化成时间戳:
Date.parse(new Date()) //1642471535000
Date.parse("2022/1/18 10:05") //1642471500000
注意:不推荐这种办法,毫秒级别的数值被转化为000。
方法三:valueOf()
通过valueOf()函数返回指定对象的原始值获得准确的时间戳值:
(new Date()).valueOf() //1642471624512
方法四:getTime()
通过原型方法直接获得当前时间的毫秒值,准确:
new Date().getTime() //1642471711588
方法五:Number
将时间对象转化为一个number类型的数值,即时间戳
Number(new Date()) //1642471746435
二、js时间戳转时间
我们可以接用 new Date(时间戳) 格式转化获得当前时间,比如:
new Date(1472048779952)
Wed Aug 24 2016 22:26:19 GMT+0800 (中国标准时间)
** 注意:时间戳参数必须是
Number类型,如果是字符串,解析结果:Invalid Date。 **
如果后端直接返回时间戳给前端,前端如何转换呢?下面介绍2种实现方式
方法一:生成’2022/1/18 上午10:09 '格式
方案1:.toLocaleString().replace(/:\d{1,2}$/,’ ')
function getLocalTime(n) {
return new Date(parseInt(n)).toLocaleString().replace(/:\d{1,2}$/,' ');
}
getLocalTime(1642471746435) //'2022/1/18 上午10:09 '
方案2:.toLocaleString().substr(0,14)
也可以用如下,想取几位就几位,注意,空格也算!
function getLocalTime(n) {
return new Date(parseInt(n)).toLocaleString().substr(0,14)
}
getLocalTime(1642471746435) //'2022/1/18 上午10'
方案3:正则 .toLocaleString().replace(/年|月/g, “-”).replace(/日/g, " ")
或者利用正则:
function getLocalTime(n){
return new Date(parseInt(n)).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");
}
getLocalTime (1642471746435) //'2022/1/18 上午10:09:06'
方法二:生成’yyyy-MM-dd hh:mm:ss '格式
先转换为data对象,然后利用拼接正则等手段来实现:
function getData(n){
n=new Date(n)
return n.toLocaleDateString().replace(/\//g, "-") + " " + n.toTimeString().substr(0, 8)
}
getData(1642471746435) //'2022-1-18 10:09:06'
不过这样转换在某些浏览器上会出现不理想的效果,因为toLocaleDateString()方法是因浏览器而异的,比如 IE为"2016年8月24日 22:26:19"格式 ;搜狗为"Wednesday, August 24, 2016 22:39:42"
可以通过分别获取时间的年月日进行拼接,这样兼容性更好:
function getData(n)

1864

被折叠的 条评论
为什么被折叠?



