3

How can I subtract days from a date field?

Example:

Date Value is 03/10/2014 (mm/dd/yy),

I want to be able to subtract 6 weedays from it to get 03/03/2014

Can someone please help me get this.

Fiddle: to add 6 weekdays and disable all previous date values... From this fiddle whatever date is selected 6 weekdays must be subtracted from it.

i.e $("#txtFromDate").val() - 6 weekdays http://jsfiddle.net/7DHVr/8/

Thanks in advance

4

4 回答 4

2

 var count = 10;
    //Add the 2 days of weekend in numer of days .
    var d = new Date();
    
    count = count + (parseInt(count/5))*2;
    d.setDate(d.getDate() -count);
    //suppose its ending on weekend day then increment them manually.
    if(d.getDay() == 6 ) d.setDate(d.getDate() -1); 
    if(d.getDay() == 0){ d.setDate(d.getDate() - 2);}; 
    alert(d);

它将从您想要动态减去一天的任何内容中减去整个周末

于 2014-03-03T06:21:44.060 回答
2

这可以通过从 javascript 中的 Date 类型变量中减去来完成,如下所示

var d = new Date("08/18/2009");
d.setDate(d.getDate()-5);

这将返回代表该日期的数字字符串,然后使用

new Date(new Date().setDate(new Date().getDate()-5))

如果您想将其重新格式化为日期,详细的答案在此处从 JavaScript 中的日期减去天数

于 2014-03-03T06:16:43.553 回答
2

只是为了添加到以前的答案。您可能希望使用DateJs来更轻松地使用日期 API。

所以它会是这样的:

 Date.today().addDays(-6)   

要删除 6 个工作日,您只需要执行

new Date().last().week()  - this will substruct 5 weekdays

然后如果是工作日,则附加 1,如果是星期六,则为 2,如果是星期日 - 3

于 2014-03-03T06:20:45.303 回答
1

虽然您可以使用标准的 javascriptDate对象来完成此操作,但我强烈建议您使用诸如moment.js之类的日期时间库,而不是尝试使用您自己的。尤其是当您考虑语言环境、时区、闰年、不同长度的月份、星期几开始等时。

Moment.js 有工作日支持,它的文档可以在这里找到。

要从日期中减去 6 个工作日,您可以执行以下操作:

moment(date).weekday(-6);

请注意,您可以传递现有的 javascriptDate以及各种 ISO 日期格式,甚至只是其中包含的数组[year, month, day, hour, minute, second]。如果您未提供日期,则 moment 将默认为当前日期和时间。

更多关于可以解析的内容可以在这里找到。

于 2014-03-03T06:30:01.247 回答