以下代码用于获取日期值,然后向其添加两个小时。我真的很想知道如何给出一个条件,仅在早上 08:30 到晚上 18:30 之间添加两个小时,并跳过这两天(周六、周日)。
例如:如果给定日期是星期二 17:30,那么它遵循的规则将为 ( 17:30 (星期二) + 2 = 09:30 (星期三 - 第二天),并且如果给定日期是 17:00(周五),如果我们跳过周末 09:00(周一-跳过周末)等等...
var now = new Date(Date.parse($(".x-form-hidden.x-form-field :eq(0)").val()));
now.setHours(now.getHours() + 2);
var dayVar = "";
if (now.getDate() < 10) {
dayVar = 0 + "" + now.getDate()
} else {
dayVar = now.getDate();
}
var dateString =
now.getFullYear() + "-" +
(now.getMonth() + 1) + "-" +
dayVar + " " +
now.getHours() + ":" + now.getMinutes() + ":0" + now.getSeconds();
$(".x-form-hidden.x-form-field :eq(1)").attr('value', dateString);
最佳答案
function addTwoHours(date) {
//date to decimal
var day = date.getDay() - 1;
var hour = date.getHours() - 8;
var decimal = day * 10 + hour;
//add two hours
decimal += 2;
//decimal to date
var newDay = Math.floor(decimal / 10);
var nextDay = newDay - day == 1;
var weekEnd = newDay % 5 == 0;
var newHour = (decimal % 10) + 8;
var newDate = new Date(date.getTime() + (nextDay?24:0) * (weekEnd?3:1) * 60 * 60 * 1000);
newDate.setHours(newHour);
return newDate;
}
您的时间范围表示每周 5 天、每天 10 小时,因此很容易映射到 50 小时的连续 block 。然后考虑单位和十给出移位。
以下示例获取 2 月 1 日星期五 17:15 的日期,并返回 2 月 4 日星期一 9:15。 addTwoHours(new Date(2013, 1, 1, 17, 15));
关于javascript - 在给定日期上添加两个小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204663/