时间戳转为时间(日期格式)
一、已有的时间戳转为日期格式
function formatTime(time){
// 比如需要这样的格式 yyyy-MM-dd hh:mm:ss
var date = new Date(time);
var Y = date.getFullYear() + '-';
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
var D = date.getDate() + ' ';
var h = date.getHours() + ':';
var m = date.getMinutes() + ':';
var s = date.getSeconds();
//将上面的拼接到一块
return Y+M+D+h+m+s
}
console.log(formatTime(1659062375000));
// 输出结果:2022-07-29 10:39:35
以上为已知的时间戳转为日期格式时间。
已知问题
- 上述的代码受本机时区影响,数据的结果为东8区时间。
- 改为其他时区时,同个时间戳会有多个日期格式的时间。如图:
二、将时间戳转为日期格式时间[北京时间]-不受本地时区影响
重新计算东八区时间戳
function getTime8(time){
// 东8区,东时区记做正数
let zoneOffset = 8;
// 算出时差,并转换为毫秒:
let offset = new Date().getTimezoneOffset() * 60 * 1000;
// 此时东8区的时间
let currentZoneDate = new Date(Number(time) + offset + zoneOffset * 60 * 60 * 1000);
return new Date(currentZoneDate).getTime()
}
获取日期格式的背景时间
let time = 1659062375000
formatTime(getTime8(time))
// 输出结果固定为:2022-07-29 10:39:35