一、通过两个时间戳计算相差的天数、小时、分钟数

//计算两个时间戳之间的毫秒差
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"