javascript Date加减函数

博客强调了基础知识的重要性,指出抄袭只能让人知其然不知其所以然,涉及JavaScript日期计算相关内容。

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

基础知识,抄袭只会知其然而不知其所以然.

/*
判断是否为闰年(366天),平年365天
遵循的规律为:  四年一闰,百年不闰,四百年再闰.
*/
Date.prototype.isleap = function () {
    var y = this.getFullYear();
    return (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
};

/*
在日期上加减天数
day:正值表示增加几天,负值为减少几天
示例:
var d = new Date();
d.addDay(-15); //d现在是15天前
*/
Date.prototype.addDay = function (day) {
    this.setTime(this.getTime() + (day * 86400000));
};

/*
在日期上增加月份
month:正值表示增加几个月,负值为减少几个月
示例:
var d = new Date();
d.addMonth(-12); //d现在是一年前

一三五七八十腊(十二月),三十一日永不差;
四六九冬(十一月)三十日,唯有二月二十八(闰年二十九)
*/
Date.prototype.addMonth = function (month) {
    var day = 0;
    var daymilliseconds = 86400000;//24 * 3600 * 1000;
    var count = Math.abs(month);
    for (var i = 0 ; i < count ; ++i) {
        /*
        * getMonth() range 0-11
        * 减的时间以上月天数为准,加的时候以本月天数为准
        */
        var mon = (this.getMonth() + 1)+ (month >= 0 ? 0 : -1);
        switch (mon) {
            case 2:
                day = this.isleap() ? 29 : 28;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                day = 30
                break;
            default:
                day = 31;
                break;
        }      
        var milliseconds = day * daymilliseconds;
        milliseconds = (month >= 0 ? milliseconds : 0 - milliseconds);
        this.setTime(this.getTime() + milliseconds);
    }
};
<think>好的,用户想了解JavaScriptDate函数,我需要详细但清晰地介绍。首先,确定用户可能的背景,可能是刚开始学习前端开发,或者需要处理日期时间相关问题。用户的需求可能包括如何创建Date对象、常用方法、注意事项等。 首先,我应该从Date对象的基本概念入手,说明它是处理日期和时间的核心对象。然后,分步骤讲解如何创建Date实例,包括当前时间、指定时间戳、字符串解析以及分解参数的方式。需要举例说明每种创建方法,比如使用new Date()获取当前时间,或者用分解参数的方式设置年月日。 接下来,常用方法部分需要分类,比如获取方法、设置方法、格式化方法。每个类别下列举几个重要的方法,如getFullYear()、setMonth()、toISOString()等,并提供示例代码,帮助用户理解如何使用。同时,要提醒月份从0开始这个常见的陷阱,避免用户出错。 然后,注意事项部分需要涵盖时区问题,说明不同方法的区别,比如getHours()和getUTCHours()。处理跨浏览器兼容性问题,特别是日期字符串解析的不同表现,建议使用分解参数或时间戳。还要提到日期计算,比如加减天数可能需要通过时间戳转换来实现。 最后,总结Date对象的重要性,并推荐现代库如moment.js或date-fns,供用户需要更复杂操作时参考。整个过程中保持语言简洁,结构清晰,避免技术术语过于复杂,确保用户能够逐步理解和应用。</think>JavaScript中的`Date`对象是处理日期和时间的核心工具。以下是逐步说明: --- ### 一、创建Date对象 ```javascript // 1. 当前时间 const now = new Date(); // 返回浏览器所在时区的当前时间 // 2. 通过时间戳(毫数,从1970-01-01 00:00:00 UTC开始) const timestamp = 1717179200000; const date1 = new Date(timestamp); // 3. 通过日期字符串(注意浏览器兼容性) const date2 = new Date("2024-05-31T12:34:56"); // 4. 通过分解参数(年, 月, 日, 时, 分, , 毫) const date3 = new Date(2024, 4, 31, 12, 34, 56); // 注意:月份从0开始(0=1月,4=5月) ``` --- ### 二、常用方法 #### 1. 获取日期组件 ```javascript const year = date.getFullYear(); // 四位数年份:2024 const month = date.getMonth(); // 0-11(0=1月) const day = date.getDate(); // 1-31 const hours = date.getHours(); // 0-23 const utcHours = date.getUTCHours(); // UTC时区的小时 ``` #### 2. 设置日期组件 ```javascript date.setFullYear(2025); date.setMonth(11); // 设置为12月 date.setDate(25); // 修改当月日期 ``` #### 3. 格式化输出 ```javascript date.toString(); // "Fri May 31 2024 12:34:56 GMT+0800" date.toISOString(); // "2024-05-31T04:34:56.000Z"(UTC时间) date.toLocaleString("zh-CN"); // "2024/5/31 12:34:56" ``` --- ### 三、注意事项 1. **时区问题**: - `getHours()`返回本地时区时间 - `getUTCHours()`返回UTC时间 - 建议统一使用UTC方法处理跨时区应用 2. **月份陷阱**: ```javascript new Date(2024, 0, 1); // 2024年1月1日 new Date("2024-01-01"); // 注意字符串格式的月份是1-12 ``` 3. **日期计算**: ```javascript // 计算3天后的时间 const newDate = new Date(date.getTime() + 3 * 24 * 60 * 60 * 1000); ``` 4. **浏览器差异**: - 不同浏览器对字符串解析支持不同,推荐使用`YYYY-MM-DD`格式 --- ### 四、总结 Date对象适用于基本日期操作,但处理复杂时区、格式化需求时,建议使用现代库: - `moment.js`(经典但体积大) - `date-fns`(模块化推荐) - `Day.js`(轻量替代) 需要特定功能时,可优先查阅[MDN Date文档](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kmblack1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值