前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 日期之某天的下一天是哪天

JavaScript 日期之某天的下一天是哪天

作者头像
前端GoGoGo
发布2018-08-24 17:16:34
8190
发布2018-08-24 17:16:34
举报

解决如题所示的问题,其实只需解决某天所在的月份有几天的问题:如果该天是这个月的最后一天,则下一天为下个月1号;否则,下一天的天的值比该天的值大 1。解决某天所在的月份有几天的问题的难点在于 某年 2 月份有几天。


其实 JavaScript 中有更简单的方法。JavaScript 的 Date 对象有个有意思的特性:当设置 date 的月或日的值大于合法值或为负值时,date 会转化成合法值 。如:

代码语言:javascript
复制
var date1 = new Date('2015/1/31');
date1.setDate(35); // date1 此时为 2015/2/4。
var date2 = new Date('2015/2/1');
date2.setDate(-1); // date2 此时为 2015/1/30。
var date3 = new Date('2015/1/1');
date3.setMonth(13); // date3 此时为 2016/2/1。
// 注意,月份 1 - 12 对应的是 Month 的值为 0 - 11。

因此,解决某天的下一天是哪天这个问题,可以用 Date 的这个特性。实现如下:

代码语言:javascript
复制
function getNextDay (date) {
    var res = new Date(date);// 拷贝date
    res.setDate(date.getDate() + 1);
    return res;
}

当然,有时候写的时候不注意,这个特性有时会导致看这很诡异的 bug。如:

代码语言:javascript
复制
var date = new Date('2016/1/31');
// 此时,想把 date 设置成 2016/2/1
date.setMonth(1);
date.setDate(1);
// 结果 date 的值却是 2016/3/1 ~

正确是做法是:

代码语言:javascript
复制
var date = new Date('2016/1/31');
// 此时,想把 date 设置成 2016/2/1
date.setDate(1);
date.setMonth(1);
// date 的值是 2016/2/1 ~

本文遵守创作共享CC BY-NC-SA 4.0协议 网络平台如需转载必须与本人联系确认。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.01.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档