使用setDate添加天数后,月份不会更改

时间:2012-07-28 11:23:12

标签: javascript date

我在Javascript中遇到日期操作问题。

我有一个firstDay变量,这是我正在操作的日期。

firstDay我从一个变量添加X天,从另一个变量添加Y天:

var from_date = new Date(firstDay); // firstDay is a string with date: 2012/07/28
var to_date = new Date(firstDay);

var X = 1;
var Y = 5;

from_date.setDate(from_date.getDate() + X);
to_date.setDate(to_date.getDate() + Y);

所以from_date现在包含日期29.07.2012,而to_date是02.08.2012。我不知道为什么日期变化得当,但月份保持不变。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

复制&粘贴了您的代码,它按预期工作:http://jsfiddle.net/kDYdW/4/

唯一的区别是firstDay,所以我认为你可能有问题。

你也说'#34;月保持不变"但据报道,7月份from_date和6月份to_date(2012年7月29日和2012年6月2日)。

更新:添加了适当的jsfiddle修订版

答案 1 :(得分:1)

setDate(d)只设置指定月份的某一天(例如setMonth(m)只更改月份)。

您可能希望使用设置完整时间戳的setTime(t),假设XY为天:

from_date.setTime(from_date.getTime() + (X * 24 * 60 * 60 * 1000));
to_date.setTime(to_date.getTime() + (Y * 24 * 60 * 60 * 1000));