javascript - 在给定日期上添加两个小时

标签 javascript jquery date datetime

以下代码用于获取日期值,然后向其添加两个小时。我真的很想知道如何给出一个条件,仅在早上 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/

相关文章:

javascript - knockout 动态 foreach 绑定(bind)不起作用

javascript - 使用 Javascript 在 URL 中获取 searchTerms 结果查询的双引号

javascript - 现在如何在 JS 中向 UTC 添加天数?

java - 调试与日历日期 GMT 相关的简单 java 代码

javascript - 一次设置一个元素为 'active'

javascript - 在 map 中显示子模式的最佳方式?

javascript - jquery,改变表单 Action

javascript - 使用 jQuery 搜索 .text() 和 data- 属性

jquery - 仅更改容器中的配对或取消配对 div

MySQL 查询错误...它没有显示确切的数据值