我试图在我的 JavaScript 代码中排除周末。我使用 moment.js 并且难以为“天”选择正确的变量。
到目前为止,我认为我需要通过将工作日变量更改为仅从第 1 天计数到第 5 天来排除第 6 天(星期六)和第 0 天(星期日)。但不确定它如何变化。
我的 jsfiddle 显示在这里:FIDDLE
HTML:
<div id="myContent">
<input type="radio" value="types" class="syncTypes" name="syncTypes"> <td><label for="xshipping.xshipping1">Free Shipping: (<span id="fsv1" value="5">5</span> to <span id="fsv2" value="10">10</span> working days)</label> </td><br>
<div id="contacts" style="display:none;border:1px #666 solid;padding:3px;top:15px;position:relative;margin-bottom:25px;">
Contacts
</div>
<input type="radio" value="groups" class="syncTypes" name="syncTypes"> <td><label for="xshipping.xshipping2">Express Shipping: (<span id="esv1" value="3">3</span> to <span id="esv2" value="4">4</span> working days)</label> </td>
<div id="groups" style="display:none;border:1px #666 solid;padding:3px;top:15px;position:relative">
Groups
</div>
</div>
JavaScript:
var a = 5; //Free shipping between a
var b = 10;//and b
var c = 3;//Express shipping between c
var d = 4;//and d
var now = moment();
var f = "Your item will be delivered between " + now.add("days",a).format("Do MMMM") + " and " + now.add("days",b).format("Do MMMM");
var g = "Your item will be delivered between " + now.add("days".c).format("Do MMMM") + " and " + now.add("days",d).format("Do MMMM");
var h = document.getElementById('contacts');
h.innerHTML = g
var i = document.getElementById('groups');
i.innerHTML = f
$(function() {
$types = $('.syncTypes');
$contacts = $('#contacts');
$groups = $('#groups');
$types.change(function() {
$this = $(this).val();
if ($this == "types") {
$groups.slideUp(300);
$contacts.delay(200).slideDown(300);
}
else if ($this == "groups") {
$contacts.slideUp(300);
$groups.delay(200).slideDown(300);
}
});
});
最佳答案
给你!
function addWeekdays(date, days) {
date = moment(date); // use a clone
while (days > 0) {
date = date.add(1, 'days');
// decrease "days" only if it's a weekday.
if (date.isoWeekday() !== 6 && date.isoWeekday() !== 7) {
days -= 1;
}
}
return date;
}
你可以这样调用它
var date = addWeekdays(moment(), 5);
我使用 .isoWeekday
而不是 .weekday
因为它不依赖于语言环境(.weekday(0)
可以是周一或周日)。
不要减去工作日,即 addWeekdays(moment(), -3)
否则这个简单的函数将永远循环下去!
已更新 JSFiddle http://jsfiddle.net/Xt2e6/39/ (使用不同的momentjs cdn)
关于javascript - 如何使用 Moment.js 排除两个日期之间的周末,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20788411/