我有一个对象数组,每个对象看起来像这样
{
"ActionDateTime": "2018-07-31T11:07:11Z",
"ExternalID": 3962770,
"GrandTotal": 707.5,
"InternalID": 52858173,
"ItemName": "Ricciolini Pasta",
}
我需要以“ ActionDateType”等于当前月份(moment()。format('MMMM')//八月)的方式过滤该数组(也许使用moment.js)
这是我的代码:
var array = [];
array = data.filter(function (el) {
var a = el.ActionDateTime
return moment(a).format('MMMM') == moment().format('MMMM')
})
console.log(array)
答案 0 :(得分:0)
function timeTest() {
let dateStr = '2018-07-31T11:07:11Z'
let dateTs = new Date(dateStr)
let ret = dateTs.getFullYear().toString() + '.' +
(dateTs.getMonth() + 1).toString() + '.' +
dateTs.getDate().toString()
console.log(ret)
}
timeTest()
我认为您可以使用javascript的api。
答案 1 :(得分:0)
您可以使用JavaScript Date
来做到这一点。
由于您的ActionDateTime
值采用可解析的格式,因此您可以使用Date.parse
来获取时间戳。
let date = Date.parse ("2018-07-31T11:07:11Z")
要获取当前月份,可以使用new Date().getMonth ()
。
也将它们结合在一起,就会得到类似的东西。
let arr = [{
"ActionDateTime": "2018-08-31T11:07:11Z", //<-- Note that i changed 07 to 08
"ExternalID": 3962770,
"GrandTotal": 707.5,
"InternalID": 52858173,
"ItemName": "Ricciolini Pasta",
}]
let tempDate = new Date (); //Initialise a new Date
let currentMonth = tempDate.getMonth (); //Get the current month, from the untouched date.
let filtered = arr.filter (({ActionDateTime}) =>
tempDate.setTime (Date.parse (ActionDateTime)) &&
tempDate.getMonth () === currentMonth);
console.log (filtered)
正如评论中指出的那样:我更改了日期,以便过滤器在8月运行时返回一个条目。
答案 2 :(得分:0)
我已经修改了OP的代码(这确实可以正常工作,但是我需要删除对时间的依赖才能使其在这里工作)。
您所做的是正确的,但是您需要过滤当月的数据,而您要过滤上个月的数据。我添加了3个数据,上个月1个,当月2个,但去年一个。注释掉了也占这一年的收益表,不确定是否需要,但我希望它只是被忘记了。
var data = [
{
"ActionDateTime": "2018-07-31T11:07:11Z",
"ExternalID": 3962770,
"GrandTotal": 707.5,
"InternalID": 52858173,
"ItemName": "Ricciolini Pasta",
},
{
"ActionDateTime": "2018-08-02T11:07:11Z",
"ExternalID": 3962770,
"GrandTotal": 707.5,
"InternalID": 52858173,
"ItemName": "Ricciolini Pasta",
},
{
"ActionDateTime": "2017-08-02T11:07:11Z",
"ExternalID": 3962770,
"GrandTotal": 707.5,
"InternalID": 52858173,
"ItemName": "Ricciolini Pasta",
}];
let array = [];
let curDate = new Date();
array = data.filter(function (el) {
let a = new Date(el.ActionDateTime)
//return a.getMonth() ==curDate.getMonth() && a.getYear() ==curDate.getYear()
return a.getMonth() ==curDate.getMonth()
})
console.log(array)