向日期添加天数的Javascript

向日期添加天数的Javascript,javascript,html,date,Javascript,Html,Date,您好,我正在尝试创建一个变量today,即当前日期today。我正试图增加106天,它的工作成功。然后我尝试创建第二个变量today2,并从'today'变量中减去31天(当前日期+106-31)。这部分不起作用。这就是它给我的 2013年3月28日星期四11:52:21美国东部时间 美国东部时间2012年11月27日星期二11:52:21 第二行不是第一行的31天前。有人能帮我纠正一下吗 请随意使用我的JSFIDLE var today=新日期(); var today2=新日期(); to

您好,我正在尝试创建一个变量today,即当前日期today。我正试图增加106天,它的工作成功。然后我尝试创建第二个变量today2,并从'today'变量中减去31天(当前日期+106-31)。这部分不起作用。这就是它给我的

2013年3月28日星期四11:52:21美国东部时间
美国东部时间2012年11月27日星期二11:52:21

第二行不是第一行的31天前。有人能帮我纠正一下吗

请随意使用我的JSFIDLE


var today=新日期();
var today2=新日期();
today.setDate(today.getDate()+106);
today2.setDate(today.getDate()-31);
var dd=today.getDate();
var mm=today.getMonth()//一月是零!
var yy=today.getFullYear();
document.getElementById('current').innerHTML=today;
document.getElementById('current2').innerHTML=today2;

您不能将负数传递给
setDate
<代码>设置日期用于设置日期以设置绝对日期,而不是相对日期

发件人:

如果指定的参数超出预期范围,setDate将尝试相应地更新date对象中的日期信息。例如,如果对dayValue使用0,则日期将设置为上个月的最后一天


现在是圣诞节时间,所以我给出答案只是为了复制/粘贴:

var oneDay = 24 * 60 * 60 * 1000, // 24h
    today = new Date().getTime(), // in ms
    firstDate,
    secondDate;

firstDate = new Date(today + 106 * oneDay);
secondDate = new Date(firstDate.getTime() - 31 * oneDay);
尝试:


数学解决方案:

在当前日期(106-31)的基础上增加75天,然后在该日期的基础上增加31天。更改代码上显示两个日期的顺序


当你总是可以前进时,为什么还要前进和后退呢?

@Neal:他就是这么做的。问题是当值为负数时。@StackOverFlow:没有人建议使用jQuery。请注意夏令时的更改日期。一个有23小时,另一个有25小时。在那几天你可能会得到奇怪的结果。是的。如果要操纵日期,请使用时间戳!:-)问题是,
setDate
用于获取日期,从1到31。它不用于添加天数。但它将正确处理超出预期范围的值,因此您实际上可以使用它来添加天数。不过,我不确定是否定义了该行为。正如上面所述:几分钟后我就可以完成;)-我喜欢这个图书馆,因为我不想担心日期算术。它支持闰年、夏令时、时区等。因此,您可以非常轻松地
addDays
addMonths
addYears
(或减去它们)。但是添加插件只是为了使用一次并不是一个好主意。@Eru,是的,但我通常发现如果我在代码的某个部分操纵日期,我需要在其他地方执行它。。。这个30KB的文件值不值得由你决定。对,但我真的不知道这个函数会被使用多少次。我的只是一个选择或建议,你可以接受,也可以不接受。@mccannf同意,我查看了date.js的代码库,我不得不说这是愚蠢的。所以这是一个很好的插件,但是如果你知道你要做什么,它真的需要吗?
var oneDay = 24 * 60 * 60 * 1000, // 24h
    today = new Date().getTime(), // in ms
    firstDate,
    secondDate;

firstDate = new Date(today + 106 * oneDay);
secondDate = new Date(firstDate.getTime() - 31 * oneDay);
Date.parse('t - 31 d'); // today - 31 days
Date.today().add(106).days().add(-31).days();