【问题标题】:Subtracting 1 month from array of dates从日期数组中减去 1 个月
【发布时间】:2019-09-17 03:55:56
【问题描述】:

我使用的日期选择器是零索引的,它按 1 个月显示“错误日期”。所以我需要纠正这一点。我正在尝试以以下格式构建日期数组,然后更正日期选择器中的错误(减去 1 个月),然后将其插入日期选择器。这是我到目前为止编写的代码,但仅适用于字符串,而不适用于数组。

我想做的例子:

var array = [
        new Date("11/28/2019"),
        new Date("12/25/2019"),
        new Date("01/01/2020"),
        new Date("01/20/2020"),
        new Date("02/17/2020"),
        new Date("05/25/2020"),
        new Date("07/04/2020"),
        new Date("09/07/2020"),
        new Date("11/26/2020"),
        new Date("12/25/2020"),
        ];

fixeddates.setMonth(array.getMonth() - 1);

但我需要固定日期以这种格式输出数组:[yyyy, m, d]

所以基本上我需要将所有这些日期减去 1 个月,并将格式更改为日期选择器接受的格式。

谢谢!

【问题讨论】:

  • 有趣的错误。尤其是日期 29、30 和 31 并非在所有月份都存在。您可以使用数据对象的 getFullYear、getMonth 和 getDate 来提取值。请注意,getMonth 是从零开始的:0 = 一月。
  • 你为什么要使用new Date("11/28/2019")?你应该使用new Date(2019, 10, 28)

标签: javascript arrays date pickadate


【解决方案1】:

您可以通过数组“映射”以将每一行更改为另一个对象。在这种情况下,我将每个日期转换为 (yyyy, mm, dd) 的数组。 Date.getMonth() 已经返回值负 1,所以我没有再递减它。

var array = [
        new Date("11/28/2019"),
        new Date("12/25/2019"),
        new Date("01/01/2020"),
        new Date("01/20/2020"),
        new Date("02/17/2020"),
        new Date("05/25/2020"),
        new Date("07/04/2020"),
        new Date("09/07/2020"),
        new Date("11/26/2020"),
        new Date("12/25/2020"),
        ];

var fixedDates = array.map(function(date) {
  return [date.getFullYear(), date.getMonth(), date.getDate()]
});
console.log(fixedDates);

【讨论】:

  • 太棒了!太感谢了。我唯一的另一个问题是我将如何在该数组之前插入一个“1”?例如,我希望输出如下所示:[1, [2019, 10, 28],[2019, 11, 25],etc.]"
  • 结果是一个数组数组。因此,您可以使用数组函数unshift。见developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…fixedDates.unshift(1) 应该做你需要的。或者你可以做fixedDates = [1].concat(array.map(...))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2016-12-08
  • 1970-01-01
  • 2017-08-23
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多