【工具类】JS实现时间的加减、格式化以及比大小的方法

本文介绍了如何使用JavaScript实现时间的加减操作,支持年、月、日、时、分、秒,同时提供了格式化时间和比较两个时间的方法,确保操作符合实际日期限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用js实现时间的加减、格式化以及比大小的方法

  • 传入一个时间加上若干时间{年、月、日、时、分、秒}
/**
 * 传入一个时间加上若干时间{年、月、日、时、分、秒}
 * @param {原始时间} dateTime 
 * @param {需要加的数量} addNum 
 * @param {需要加的单位} addFlag 
 * @param {需要返回的时间格式} format 
 * @returns 加完之后的时间
 */
export function addTime(dateTime, addNum, addFlag, format) {
    dateTime = new Date(dateTime);
    switch (addFlag) {
        case "second":
            dateTime = dateTime.setSeconds(dateTime.getSeconds() + addNum); break;
        case "minute":
            dateTime = dateTime.setMinutes(dateTime.getMinutes() + addNum); break;
        case "hour":
            dateTime = dateTime.setHours(dateTime.getHours() + addNum); break;
        case "day":
            dateTime = dateTime.setDate(dateTime.getDate() + addNum);break;
        case "month":
            dateTime = dateTime.setMonth(dateTime.getMonth() + addNum); break;
        case "year":
            dateTime = dateTime.setYear(dateTime.getYear() + addNum); break;
        default: break;
    }
    dateTime = new Date(dateTime);
    return formatDate(dateTime, format);
}
  • 相加之和返回的时间不能超过当前时间
/**
 * 
 * @param {原始时间} dateTime 
 * @param {需要加的数量} addNum 
 * @param {需要加的单位} addFlag 
 * @param {需要返回的时间格式} format 
 * @returns 加完之后的时间
 */
export function addTimeBeforeCurrent(dateTime, addNum, addFlag, format) {
    dateTime = addTime(dateTime, addNum, addFlag)
    let nowTime = new Date()
    return compareTime(dateTime, nowTime) ? formatDate(nowTime, format) : formatDate(dateTime, format);
}
  • 两个时间之间进行比较
/**
 * 
 * @param {初始时间} time 
 * @param {需要进行比较的时间} compareTime 
 * @returns 前一个时间大于后一个则返回true否则返回false
 */
export function compareTime(time, compareTime) {
    time = new Date(time);
    compareTime = new Date(compareTime);
    console.log("time===========>", time)
    console.log("compareTime===========>", compareTime)
    console.log(time - compareTime); // 这里计算两个时间之间的毫秒差
    return time - compareTime > 0
}
  • 时间格式化
/**
 * 
 * @param {根据标记返回相应格式的时间} date 
 * @param {要截断到哪一部分} format 
 * @returns 
 */
export function formatDate(date, format = "second") {
    //date为时间戳
    var date = new Date(date);
    var Y = date.getFullYear();
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
    var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
    var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours());
    var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes());
    var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
    switch (format) {
        case "second":
            return `${Y}-${M}-${D} ${h}:${m}:${s}`;
        case "minute":
            return `${Y}-${M}-${D} ${h}:${m}`;
        case "hour":
            return `${Y}-${M}-${D} ${h}`;
        case "day":
            return `${Y}-${M}-${D}`;
        case "month":
            return `${Y}-${M}`;
        case "year":
            return `${Y}`;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值