javascript - 如何在 Javascript 中的日期对象中排除周末

标签 javascript date

我面临着在 JavaScript 中排除周末日期的问题。根据我的业务要求,我想从日期对象中排除每周星期五、星期六和星期日的 3 天。这里我需要的是星期五的值应显示为星期一,周六为周二,周日为周三。我能做到。

我在这里面临的问题是,当我们运行上面的示例时,a[0] 值应该是 2017 年 9 月 21 日,但我得到的是 2017 年 9 月 20 日,剩余的数组值不应更改。所以请帮我解决这个问题

var a = ["21-SEP-2017", "22-SEP-2017", "23-SEP-2017", "24-SEP-2017", "25-SEP-2017"];
for (i = 0; i < a.length; i++) {
  var startDate = a[i];
  startDate = new Date(startDate.replace(/-/g, "/"));

  var endDate = "",
      noOfDaysToAdd = 1;
  var count = 0;
  endDate = new Date(startDate.setDate(startDate.getDate()));

  if (startDate.getDay() != 0 && startDate.getDay() != 5 && startDate.getDay() != 6) {
    endDate = new Date(startDate.setDate(startDate.getDate() + i - 1));
  } else {
    startDate.setDate(startDate.getDate() + 3)
    endDate = new Date(startDate.setDate(startDate.getDate()));
  }
  console.log(endDate); //You can format this date as per your requirement
}

最佳答案

您的代码似乎尚未完成:变量 noOfDaysToAddcount 从未使用过,如果使用过,它们将在循环的每次迭代中重置,这不能成为目的。

您的输出显示 9 月 20 日是因为您没有输出日期的字符串化版本,而是输出日期对象本身,然后 console.log 会将日期显示为 UTC 日期(注意时间部分与时区差异匹配)。请改用 .toString() 或其他方式将日期转换为本地化字符串。

以下是您可以执行的操作:

function toDate(s) {
    return new Date(s.replace(/-/g, '/'));
}

function toStr(dt) {
    var months = ["JAN","FEB","MAR","APR","MAY","JUN",
                  "JUL","AUG","SEP","OCT","NOV","DEC"];
    return [('0'+dt.getDate()).substr(-2), months[dt.getMonth()], dt.getFullYear()]
           .join('-');
}

var a = ["21-SEP-2017", "22-SEP-2017", "23-SEP-2017", "24-SEP-2017", "25-SEP-2017"],
    add = 0;
var result = a.map(toDate).map(dt => {
    dt.setDate(dt.getDate()+add);
    var move = [0, 6, 5].indexOf(dt.getDay()) + 1;
    if (move) {
        add += move;
        dt.setDate(dt.getDate()+move);
    }
    return dt;
}).map(toStr);

console.log(result);

关于javascript - 如何在 Javascript 中的日期对象中排除周末,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226692/

相关文章:

javascript - 我如何使用 momentjs 找到上周一?

Python 将时间戳转换为日期

angularjs - Angular.js : Input date shows date -1 day

java - 如何在不使用 Joda Time 的情况下计算特定工作时间的两个日期之间的小时数?

javascript - 为什么 Javascript 项目将构建的结果检查到 git 中?

javascript - React Native NetInfo 'connectionChange' 事件未触发

javascript - 如何使用jquery获取对象中元素的数据属性?

sql - 如何在 PostgreSQL 中将日期格式设置为 `YYYY-MM-DDTHH24:MI:SS`

javascript - 外部脚本失败时网站未完全加载

javascript - 如何通过 JavaScript 不断访问 HTML 文本框