一、通过两个时间戳计算相差的天数、小时、分钟数
//计算两个时间戳之间的毫秒差 const difference = Date1-Date2; //计算天数 const day = Math.floor(difference / (24 * 60 * 60 * 1000)); //计算天数剩余的毫秒数 const remain = difference % (24 * 60 * 60 * 1000); //计算小时数 const hour = Math.floor(remain / (60 * 60 * 1000)); //计算小时数后剩余的毫米数 const remain1 = remain % (60 * 60 * 1000); //计算分钟数 const minute = Math.floor(remain1 / (60 * 1000));
二、日期格式转换为时间戳
方法1:getTime(精确到毫秒)
new Date("2021-07-26 18:55:49:123").getTime() // 1627296949123
方法2:valueOf(精确到毫秒)
new Date("2021-07-26 18:55:49:123").valueOf(). //1627296949123
方法3:Date.parse(精确到秒,毫秒用0代替)
Date.parse(new Date("2021-07-26 18:55:49:123")) // 1627296949000
三、将时间戳转换为日期格式
方法1:用Date方法依次将年月日时分秒一个个算出来,然后拼接成需要的时间格式字符串
function transformTime(timestamp = +new Date()) { if (timestamp) { var time = new Date(timestamp); var y = time.getFullYear();//getFullYear方法以四位数字返回年份 var M = time.getMonth() + 1;// getMonth方法从 Date 对象返回月份 (0 ~ 11),返回结果需要手动加一 var d = time.getDate();// getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31) var h = time.getHours();// getHours方法返回 Date 对象的小时 (0 ~ 23) var m = time.getMinutes();// getMinutes方法返回 Date 对象的分钟 (0 ~ 59) var s = time.getSeconds();// getSeconds方法返回 Date 对象的秒数 (0 ~ 59) return y + '-' + addZero(M) + '-' + addZero(d) + ' ' + addZero(h) + ':' + addZero(m) + ':' + addZero(s); } else { return ''; } } //对小于10的值,在前面添加字符串‘0’ function addZero(m) { return m < 10 ? '0' + m : m; } transformTime(); // "2021-07-26 20:47:39"
方法2:Date的"toJSON"方法返回格林威治时间的JSON格式字符串,实际是使用"toISOString"(使用 ISO 标准返回 Date 对象的字符串格式)方法的结果。
字符串形如"2021-07-27T14:25:53.793Z",转化为北京时间需要额外增加八个时区,我们需要取字符串前19位,然后把‘T’替换为空格,即是我们需要的时间格式。
function time(time = +new Date()) { //time: 1627367153793 var date = new Date(time + 8 * 3600 * 1000); // 增加8小时之后,date: Tue Jul 27 2021 22:25:53 GMT+0800 (中国标准时间) return date.toJSON().substr(0, 19).replace('T', ' ');//date.toJSON(): 2021-07-27T14:25:53.793Z //或者如下: // return date.toISOString().substr(0, 19).replace('T', ' '); //date.toISOString(): 2021-07-27T14:25:53.793Z } time(); // "2021-07-27 14:25:53"