以下代码用于获取日期值,然后向其添加两个小时。我真的很想知道如何在早上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);
答案 0 :(得分:1)
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;
}
您的时间范围代表每周10小时,每周5天,因此很容易映射到连续50小时。考虑到单位和数字给出了转变。
以下示例获取2月1日星期五17:15的日期,该日期将于2月4日星期一9:15返回。 addTwoHours(new Date(2013, 1, 1, 17, 15));