使用Javascript从日期减去工作日

时间:2016-03-02 13:53:23

标签: javascript date

我想在zapier.com-zap中使用Javascript。以下是我现在连续五天要做的事情:

我有一个日期(无论您需要什么样的自定义格式),需要从中扣除两个工作日并使用Javascript将其输出到DD-MM-YYYY。听起来很简单,但我不能让它发挥作用。

我希望有人可以帮助我!非常感谢你。

我忘了提一件必不可少的东西,抱歉。如果结果是星期日或星期六,我需要最后一个工作日(星期五)的日期。

2 个答案:

答案 0 :(得分:2)

如果您愿意使用外部库,MomentJS是一个非常流行的解析和修改JavaScript日期的工具,并且会非常简单:

示例1:减去2天和格式



var date = new Date(),
    formatted = moment(date).subtract(2, 'days').format('DD-MM-YYYY');

document.getElementById('date').innerHTML = date;
document.getElementById('example').innerHTML = formatted;

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
This example takes today's date (<span id="date"></span>), subtracts 2 days from it,
and then displays it below in the desired format (DD-MM-YYYY):

<p id="example"></p>
&#13;
&#13;
&#13;

示例2:减去2 工作天数和格式

如果工作日表示星期一到星期五,那么您需要做的就是确定date变量中的日期是星期一还是星期二,然后相应地调整传入MomentJS的subtract方法的值。我们可以使用MomentJS's get day of week function

执行此操作

&#13;
&#13;
var date = new Date(),
    formatted, daysToSubtract;

switch (moment(date).day()) {
    // Sunday = 3 days
    case 0:
      daysToSubtract = 3;
      break;
    // Monday and Tuesday = 4 days
    case 1:
    case 2:
      daysToSubtract = 4;
      break;
    // Subtract 2 days otherwise.
    default:
      daysToSubtract = 2;
      break;
}


formatted = moment(date).subtract(daysToSubtract, 'days').format('DD-MM-YYYY');

document.getElementById('date').innerHTML = date;
document.getElementById('example').innerHTML = formatted;
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
This example takes today's date (<span id="date"></span>), subtracts 2 working days (Monday to Friday) from it,
and then displays it below in the desired format (DD-MM-YYYY):

<p id="example"></p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

虽然我同意@James Donnelly的说法很棒,但是如果不使用额外的库就可以实现你的任务。我创建了这个帮助函数来完成你所要求的。只需传递你的日期,无论你想加/减多少天(在你的情况下为-2)。

function addDaysToDate(date, days)
{
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    var dd = result.getDate();
    var mm = result.getMonth() + 1; // January starts at 0.
    var yyyy = result.getFullYear();

    if (dd < 10)
    {
        dd = '0' + dd
    }
    if (mm < 10)
    {
        mm = '0' + mm
    }

    return dd + '/' + mm + '/' + yyyy;
}