javascript - 在js中使用两个日期获取天数

标签 javascript jquery

我遇到了这个问题,我只能得到指定的 2 个日期之间的天数。请看下面的代码:

var getDaysArray = function(start, end) {
  for (var arr = [], dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
    arr.push(new Date(dt));
  }
  return arr;
};

var daylist = getDaysArray(new Date('08/13/2018'), new Date('08/17/2018'));
daylist.map((v) => v.toISOString().slice(0, 10)).join("");
console.log(daylist);

上面代码的输出是:

enter image description here

预期输出(由于开始和结束日期 08/13/201808/17/2018):

0: Date 2018-08-13T16:00:00.000Z
1: Date 2018-08-14T16:00:00.000Z
2: Date 2018-08-15T16:00:00.000Z
3: Date 2018-08-16T16:00:00.000Z
4: Date 2018-08-17T16:00:00.000Z

注意:上面的代码来自某处找到的 SO 答案之一。

最佳答案

toISOString表示 UTC 格式的日期。您可能处于正时区偏移,这就是为什么日期对象的 UTC 表示是休息日的原因。您可以使用 toLocaleString而不是在您的时区中表示您的日期。

另一个问题是 Array.prototype.map重新调整一个新数组,您忘记将其分配给 daylist 如果没有该分配,将不会对 daylist 进行任何更改。

下面的代码片段可以根据您的要求工作。

var getDaysArray = function(start, end) {
  for (var arr = [], dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
    arr.push(new Date(dt));
  }
  return arr;
};

var daylist = getDaysArray(new Date('08/13/2018'), new Date('08/17/2018'));
daylist = daylist.map((v) => v.toLocaleString());
console.log(daylist);

关于javascript - 在js中使用两个日期获取天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997984/

相关文章:

javascript - 限制文本框中第一个位置的零

jquery - 如何使用 jquery datepicker 在日期中添加一天

jquery - .net webapi HttpGet 与 HttpPost。为什么使用 HttpGet?

javascript - 为什么我的 onClick 在渲染时激活?

javascript - Array.prototype.join.call 在后台为字符串做什么?

javascript - 最小化 iPad 浏览器 safari 时仍在播放音频

javascript - Google Map API 路线请求限制

javascript - jQuery 验证插件无法在 Keyup 上进行验证

javascript - 在 P5.js 中更改坐标系

javascript - 如何设置这个谷歌表格的高度?