我有这个对象数组
[
{
"date_from": "2017-04-29 00:00:00",
"date_to": "2017-05-02 23:59:59",
"username":"john"
},
{
"date_from": "2017-04-04 00:00:00",
"date_to": "2017-04-08 23:59:59",
"username":"james"
},
{
"date_from": "2017-04-29 00:00:00",
"date_to": "2017-05-02 23:59:59",
"username":"jacob"
}
]
我想渲染一些日历,但第一步是消除超出范围的日期。
我试过这个功能
function isDateWithinRage(date) {
const when = moment(date, 'YYYY-MM-DD');
console.log(when);
const range = moment.range('2017-04-01','2017-04-30');
return when.within(range);
}
然后我过滤了arr:
filter(arr, obj => isDateWithinRage(obj.date_from)) // returned empty [], why?
我的代码有什么问题吗?我无法找到答案。
答案 0 :(得分:1)
从文档中,似乎范围限制必须是moment
对象。
https://github.com/gf3/moment-range#create
function isDateWithinRage(date) {
const when = moment(date, 'YYYY-MM-DD');
const start = moment('2017-04-01', 'YYYY-MM-DD');
const end = moment('2017-04-01', 'YYYY-MM-DD');
const range = moment.range(start, end);
return when.within(range);
}
var filteredData = arr.filter((obj) => isDateWithinRage(obj.date_from))
答案 1 :(得分:1)
设置变量:
//date to check
let date = '2010-10-20';
//range
let start = '2010-10-19';
let end= '2010-10-25';
如果使用2.9.0及更高版本的moment.js,请使用以下代码:
return moment(date).isBetween(start, end);//returns true
如果使用以前的版本,请使用此:
if(date.diff(start) >= 0 && date.diff(end) <= 0) {
result = true;
}
答案 2 :(得分:0)
请尝试此解决方案。
function isDateWithinRage(date1,date2) {
if( moment("date1", "date format").diff(moment("date2", "date format"))
>=0) {
//Put your logic here
}
如果您进一步询问,请与我们联系。