JavaScript时间与时间戳互转详解:5种获取与转换方法

作者:橙子时间:2026-10-31 08:07:56浏览:409

本文详解JavaScript中时间与时间戳的互转方法。获取时间戳可使用Date.now()、getTime()、Date.parse()、valueOf()及Number()五种方式,注意毫秒与秒级转换。时间戳转时间可通过new Date()生成标准时间,并结合toLocaleString进行字符串截取或正则替换,实现'2022/11/9 23:59'或'yyyy-MM-dd hh:mm:ss'等格式,同时解决浏览器兼容性问题。

在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时间与时间戳互转内容,请搜索本站往期文章或继续浏览下方相关文章,感谢支持!

作者最新文章