JavaScript时间与时间戳互转详解:5种获取与转换方法
本文详解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时间与时间戳互转内容,请搜索本站往期文章或继续浏览下方相关文章,感谢支持!
JS脚本在App中运行报错怎么解决
2026-11-04 23:11:03
JS怎么使用padStart方法给数字补零
2026-11-04 11:12:03
JS是什么意思?JavaScript全称及基本定义
2026-11-04 08:05:29
JS 使用 toFixed(1) 保留一位小数的基本用法与注意事项
2026-11-03 18:34:57
JS字符串转整数:parseInt与Number的区别及用法
2026-11-03 17:26:54
相关标签:
