这是我的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/