Javascript 2010 年 11 月 30 日加上 3 个月等于 2011 年 3 月 2 日

标签 javascript

用这个脚本

var d = new Date(2010, 10, 30);
var e = new Date(d.getFullYear(), d.getMonth() + 3, d.getDate());

document.write(d + "<br>" + e);

为什么 2010 年 11 月 30 日加上 3 个月等于 2011 年 3 月 2 日?不是 2011 年 2 月 28 日吗?

2010 年 11 月 30 日和 2011 年 2 月 23 日是该月的最后一天。

http://jsfiddle.net/jWh2M/

最佳答案

在你的例子中,你指定的日期是

30 Feb 2011

转换成

2 Mar 2011

哪一种说得通,不是吗?

您一定要选择不同的添加时间跨度的方法。

要么显式计算每个月的最后一天,要么使用类似 date.js 的日期库.我自己没用过那个,但是 SO 用户 @CMS recommends it ,这对我来说已经足够了。

查看语法,这可能适用于 date.js:

Date.parse('November 30th 2010 + 3 months');

关于Javascript 2010 年 11 月 30 日加上 3 个月等于 2011 年 3 月 2 日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132303/

相关文章:

javascript - 使用 DHTML 和 JavaScript 移动对象

javascript - 如何将 Angular 中的日期作为时间戳保存到 Firestore?

javascript - document.createElement() 用于 header 标签内的 h4 标签

javascript - 盒子自动从左向右滑动

javascript - 将值从 Promise 传递给变量

javascript - Meteor - 如何在客户端安全地存储和访问 settings.json 变量?

javascript - React js中的动态路由,无法在路由中分配字符串中的组件名称

javascript - 为什么我只能运行 1 个 JavaScript 内部函数

javascript - 输入输入时,移动浏览器会调整文本区域的大小

javascript - 在 jQuery 中使用模型中的 bool