如何使用 getDay() 比较日期
How to compare days with getDay()
我正在尝试在 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()
的条件
today.getDay() !== 0 || today.getDay() !== 6
表示 不是星期日或 (||) 不是星期六 ,但在这种情况下:
周六不是周日,所以会过去
和
星期日 不是 星期六,所以也会过去
你想要的是:
不是星期天 AND (&&) 不是星期六
today.getDay() !== 0 && today.getDay() !== 6
这就是它在第二个示例中起作用的原因,只是您使用了 else 块。可以修改为:
if(dateFrom.getDay() != 0 && dateFrom.getDay() != 6){
dates.push(dateFrom.toString('dd/MM'));
console.log(dateFrom.getDay());
}
关于跳转到星期一,星期六要加2,星期天要加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>
我正在尝试在 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()
today.getDay() !== 0 || today.getDay() !== 6
表示 不是星期日或 (||) 不是星期六 ,但在这种情况下:
周六不是周日,所以会过去 和 星期日 不是 星期六,所以也会过去
你想要的是:
不是星期天 AND (&&) 不是星期六
today.getDay() !== 0 && today.getDay() !== 6
这就是它在第二个示例中起作用的原因,只是您使用了 else 块。可以修改为:
if(dateFrom.getDay() != 0 && dateFrom.getDay() != 6){
dates.push(dateFrom.toString('dd/MM'));
console.log(dateFrom.getDay());
}
关于跳转到星期一,星期六要加2,星期天要加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>