javascript - 如何使用 moment.js 获取日期范围

标签 javascript jquery html angularjs

这是我的html页面

<tr ng-show="option == 'Yearly' || option == 'Date'">
            <td>
                <label>From:</label>
            </td>
            <td>
                <input type="text" ng-model="fromdate" id="from" date-picker date-type="from" month-directive />
                {{fromdate}}
            </td>

            <td>
                <label>To:</label>
            </td>
            <td>
                <input id="todate" type="text" ng-model="todate" date-picker date-type="to" month-directive />
                {{todate}}
            </td>

        </tr>

这是我的指令

app.directive('monthDirective', function () {

return {

    restrict:'A',
    link: function (scope, elem) {
        var fromDate, toDate;
        scope.$watch('fromdate', function (newValue, oldValue) {
            fromDate = newValue;
            console.log('fromDate', newValue);
        });
        scope.$watch('todate', function (newValue, oldValue) {
            todate = newValue;
            console.log('todate', newValue);
        });

        var range = moment().range(fromDate, toDate);
        var diff = moment.preciseDiff(fromDate,toDate);
        console.log('Range', range);
        console.log('diff', diff);
    }
}

})

我需要使用 mument.js 获取 fromdate 和 todate 之间的范围。任何人都可以建议如何在我的场景中执行此操作。提前致谢

最佳答案

我知道这是一个古老的/已回答的问题,但因为它位于谷歌的顶部,所以这里是如何实现只有 moment 的日期范围(并且没有 moment-range):

import moment from 'moment'

/**
 * @param {date|moment} start The start date
 * @param {date|moment} end The end date
 * @param {string} type The range type. eg: 'days', 'hours' etc
 */
function getRange(startDate, endDate, type) {
  let fromDate = moment(startDate)
  let toDate = moment(endDate)
  let diff = toDate.diff(fromDate, type)
  let range = []
  for (let i = 0; i < diff; i++) {
    range.push(moment(startDate).add(i, type))
  }
  return range
}

返回两者之间每个“类型”(月/日/小时等)的数组,不包括结束日期

例子:

let range = getRange('2019-01-01', '2019-01-05', 'days')
// moment dates -> [ '2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04' ]

关于javascript - 如何使用 moment.js 获取日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673322/

相关文章:

html - 在 HTML 中,我可以禁用用户与整个 DOM 子树的交互吗?

javascript - 在 html 中显示值 <select> from sessionStorage

javascript - 如何验证复选框是否被选中?

javascript - Object.prototype 被禁止?

php - 使用 javascript 循环提交特定值

javascript - 单击同一提交按钮以 react-redux 形式更新状态和 Prop

javascript - 多次点击事件 - 杂乱无章?

javascript - Html.BeginAjaxForm 从操作返回数据并将其注入(inject)到用户的 DOM 中

javascript - 在 php 变量中分配一个选择的值

CSS:两个 div - 一个填充空间,一个收缩以适合