计算时间差距

计算两个时间的差距,只算到天、时、分、秒,有需要的可以直接扩展

代码

/**
 * 计算时间差距
 * @param { Date } startTime 开始时间
 * @param { Date } endTime 结束时间
 * @param { Object } unit 单位 - { day: "d", hour: "h", minute: "m", second: "s" }
 */
const timeGap = (startTime = new Date(), endTime = new Date(), unit = { day: "d", hour: "h", minute: "m", second: "s" }) => {

    // 单位
    let unitOptions = Object.assign({ day: "d", hour: "h", minute: "m", second: "s" }, unit);

    // 值 
    let value = "";

    // 间隔
    let interval = new Date(endTime).getTime() - new Date(startTime).getTime();

    // 兼容开始时间和结束时间切换
    if (interval < 0) interval = new Date(startTime).getTime() - new Date(endTime).getTime();

    // 计算天
    let day = Math.floor(interval / (24 * 3600 * 1000));
    // 填充天,去除天
    if (!!day) (value = `${day}${unitOptions.day}`, interval %= (24 * 3600 * 1000));

    // 计算时
    let hour = Math.floor(interval / (3600 * 1000));
    // 填充时,去除时
    if (!!value || !!hour) (value += `${hour}${unitOptions.hour}`, interval %= (3600 * 1000));

    // 计算分
    let minute = Math.floor(interval / (60 * 1000));
    // 填充时,去除分
    if (!!value || !!minute) (value += `${minute}${unitOptions.minute}`, interval %= (60 * 1000));

    // 计算秒
    let second = Math.floor(interval / 1000);
    // 填充秒
    if (!!value || !!second) value += `${second}${unitOptions.second}`;

    // 返回值
    return value || '0';

};

使用

// 输出:'10s'
timeGap("2023-07-18 10:10:10","2023-07-18 10:10:00");

// 输出:'1d23h59m50s'
timeGap("2023-07-16 10:10:10","2023-07-18 10:10:00");

自定义单位

// 输出:'10秒'
timeGap("2023-07-18 10:10:10","2023-07-18 10:10:00",{day: "天", hour: "时", minute: "分", second: "秒" });

// 输出:'1天23时59分50秒'
timeGap("2023-07-16 10:10:10","2023-07-18 10:10:00",{day: "天", hour: "时", minute: "分", second: "秒" });
文章作者: CaptainTwo
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CaptainTwo
前端 JavaScript NodeJs
喜欢就支持一下吧