如何用getDay()比较天数

时间:2015-08-23 17:59:14

标签: javascript datejs

我正在尝试用javascript开始一个简单的预订应用程序,我在第一步遇到了一些麻烦。我想从我的阵列中排除星期六和星期日。

这是我的脚本(我使用datejs):

var today = Date.today(),
    dateFrom = (today.getDay() !== 0) ? today : today.add(1).day(),
    dateTo = Date.today().addWeeks(1),
    dates = [];

while(dateFrom <= dateTo) {
    if(dateFrom.getDay() != 0 || dateFrom.getDay() != 6){
        dates.push(dateFrom.toString('dd/MM'));
        console.log(dateFrom.getDay());
    } 
    dateFrom.add(1).day();
};
<script src="//cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>

正如您在控制台日志中看到的那样,星期日和星期六仍在阵列中。

但如果我改变了这样的条件,它就有效(当我有两个条件要测试时,我的!=运算符有问题):

var today = Date.today(),
    dateFrom = (today.getDay() !== 0) ? today : today.add(1).day(),
    dateTo = Date.today().addWeeks(1),
    dates = [];

while(dateFrom <= dateTo) {
    if(dateFrom.getDay() == 0 || dateFrom.getDay() == 6){
    } else {
        dates.push(dateFrom.toString('dd/MM'));
        console.log(dateFrom.getDay());
    }
    dateFrom.add(1).day();
};
<script src="//cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>

我还需要更改dateFrom = (today.getDay() !== 0) ? today : today.add(1).day(),如果我们星期六是星期六那么星期一就设置它(但我有同样的问题如果改变dateFrom = (today.getDay() !== 0 || today.getDay() !== 6) ? today : today.add(1).day()的条件

1 个答案:

答案 0 :(得分:1)

today.getDay() !== 0 || today.getDay() !== 6

表示 不是星期日或(||)不是星期六 ,但在这种情况下:

星期六不是星期日,所以它会通过 和 星期日不是星期六,所以它也会通过

你想要的是:

不是星期日AND(&amp;&amp;)不是星期六

today.getDay() !== 0 && today.getDay() !== 6

这就是为什么它在第二个例子中工作,只是你正在使用else块。您可以将其修改为:

if(dateFrom.getDay() != 0 && dateFrom.getDay() != 6){
    dates.push(dateFrom.toString('dd/MM'));
    console.log(dateFrom.getDay());
}

关于跳到星期一,你必须在星期六加1,在星期日加1:

dateFrom = today.getDay() === 0 ?
           today.add(1).day() :
           (today.getDay() === 6) ? today.add(2).day() : today);

更简单的方法是执行以下操作:

var date = Date.today(),
    dates = [];

while(dates.length < 5) {
  if(date.getDay() !== 0 && date.getDay() != 6) {
    dates.push(date.toString('dd/MM'));
  }
  date = date.add(1).days();
}

从今天开始,填写数组并跳过星期六和星期日,直到阵列中有5个元素(工作日)。

var date = Date.today(),
    dates = [],
    log = '';
while(dates.length < 5) {
  if(date.getDay() !== 0 && date.getDay() != 6) {
    dates.push(date.toString('dd/MM'));
    log += dates[dates.length - 1] + '\n';
  }
  date = date.add(1).days();
}

$(function() {
  $('#result').text(log);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
<pre id="result"></pre>