【问题标题】:AngularJS or Moment JS Get Date Range from Start and End Date from an Array of Date Ranges then Flatten into one arrayAngularJS 或 Moment JS 从日期范围数组的开始日期和结束日期获取日期范围,然后展平为一个数组
【发布时间】:2017-10-19 15:35:54
【问题描述】:

基于下面的示例,我如何使用 AngularJS、Moment JS 或纯 javascript 从这两个数组中获取日期范围并将其展平为一个日期数组?

基本上把这个数组转成下面:

    [["10,01,17", "10,03,17"], ["11,02,17" , "11,04,17" ]]

放入包含在日期范围计算中的所有日期的扁平数组中:

    ["10,01,17", "10/02/17", "10,03,17", "11,02,17" , "11,03,17", "11/04/17"]

【问题讨论】:

  • 输入输出数组的转换不清楚。能再解释一下吗?
  • 你试过什么?请分享您的代码
  • @GuyYogev 首先,返回 10/01/17 到 10/03/17 和 11/02/17 到 11/04/17 的日期范围。那应该返回 [ ["10,01,17", "10/02/17", "10,03,17"], [ "11,02,17" , "11,03,17", "11/ 04/17"]]。然后将其展平为一个数组 ["10,01,17", "10/02/17", "10,03,17", "11,02,17" , "11,03,17", "11/ 04/17"]

标签: javascript angularjs momentjs angular-moment


【解决方案1】:

它并不完美,但你可以从中得到要点。 codepen

const days = [['10/03/17', '10/01/17'], ["11/02/17" , "11/04/17" ]]

const daysdiff = (d1, d2) => moment(d2).diff(moment(d1), 'days')

const dayRange = (day, count) => {
  const res = []
  for(let i = 0; i <= count; i++) {
    res.push(moment(day).add(i, 'days').format('MM/DD/YYYY'));
  }
  return res
} 

const newDays = days.map((pair) => {
  const sorted = pair.sort();
  const diff = daysdiff(sorted[0], sorted[1])
  return dayRange(sorted[0], diff);
});

result = [...newDays[0], ...newDays[1]]
console.log(result)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多