javascript时间与时间戳互转多种方式

 更新时间:2023年11月13日 11:47:20   作者:上网的虫不叫网虫  
javascript获取时间、时间戳等,最核心的就是利用Date关键词去获取,时间戳的获取方式整理了5种方法,后4种是利用new Date()实例化对象来获取当前时间,再对当前获取的时间再进一步处理获取时间戳,本文给大家介绍的非常详细,需要的朋友参考下吧

javascript获取时间、时间戳等,最核心的就是利用Date关键词去获取。

一、javascript获取时间戳

时间戳的获取方式整理了5种方法,后4种是利用new Date()实例化对象来获取当前时间,再对当前获取的时间再进一步处理获取时间戳。下面获取的时间戳都是毫秒ms级别,如果要转换成秒s级别,可以在获取的结果除以1000即可。

方式一: Date.now()

Date.now()获取当前时间戳:

Date.now() // 1667960502653

方式二: getTime()

getTime()是通过原型方法直接获取当前时间戳:

new Date().getTime() // 1667961973698
new Date('2022-11-09 23:59:59').getTime() // 1668009599000

方式三: Date.parse()

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

Date.parse(new Date()) // 1667960585000
Date.parse(new Date('2022-11-09 12:00:00')) // 1667966400000
Date.parse('2022-11-09 23:59:59') // 1667966400000

注意:该方式将毫秒级别的数值被转化为000,如果是用秒级别的时间戳且不保留小数的可以使用该方式,如果精确到毫秒级别,不推荐使用。

方式四: valueOf()

valueOf()返回指定对象的原始值获得准确的时间戳:

(new Date()).valueOf() // 1667962876782
(new Date('2022-11-09 23:59:59')).valueOf() // 1668009599000

方式五: Number()

Number()将时间对象转化成Number类型的时间戳:

Number(new Date()) // 1667962087928
Number(new Date('2022-11-09 23:59:59')) // 1668009599000

二、javascript时间戳转时间

时间戳转时间的应用场景还是比较常见的,一般在后端返回到前端的数据中可能是时间戳,在前端就需要转换成具体的时间展示,接下来整理几种时间戳转时间的方法及注意事项。

可以用new Date(时间戳)将时间戳转化成中国标准时间,示例:

new Date(1668009599000);
Wed Nov 09 2022 23:59:59 GMT+0800 (中国标准时间) 

注意:时间戳必须是Number类型,如果是字符串,解析结果:Invalid Date

如果后端直接返回时间戳给前端,前端如何转换呢?下面介绍2种实现方式:

方式一:生成’2022/11/9 23:59’格式

function getLocalTime(n) {   
	return new Date(parseInt(n)).toLocaleString().replace(/:\d{1,2}$/,' ');   
}
getLocalTime(1668009599000);  2022/11/9 23:59

也可以使用字符串截取的方法,想取几位就几位,注意:空格也算:

function getLocalTime(n) {   
	return new Date(parseInt(n)).toLocaleString().substr(0,16)
}
getLocalTime(1668009599000);  2022/11/9 23:59

使用正则表达式的方式:

function getLocalTime(n) {   
	return new Date(parseInt(n)).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");
}
getLocalTime(1668009599000);  2022/11/9 23:59:59

方式二:生成’yyyy-MM-dd hh:mm:ss’格式

function getDate(n){
	n=new Date(n);
	return n.toLocaleDateString().replace(/\//g, "-") + " " + n.toTimeString().substr(0, 8);
}
getDate(1668009599000);  2022-11-9 23:59:59

这种方式在浏览器上面有兼容性问题,toLocaleDateString()方法是因浏览器而异,比如IE为"2016年8月24日 22:26:19"格式 ;搜狗为"Wednesday, August 24, 2016 22:39:42"

可以用以下方式拥有更好的兼容:

function getData(n) {
	let now = new Date(n),
	y = now.getFullYear(),
	m = now.getMonth() + 1,
	d = now.getDate();
	return y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d) + " " + now.toTimeString().substr(0, 8);
}
getDate(1668009599000);  2022-11-09 23:59:59

到此这篇关于javascript时间与时间戳互转详解的文章就介绍到这了,更多相关js 时间与时间戳互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论