【发布时间】:2016-05-16 17:27:51
【问题描述】:
我想过滤并获取正在发送的月份和年份范围内的所有广告系列。 例如, 开始日期 - 2/1/16 结束日期 - 2017 年 1 月 2 日 年份 - 2016 月 - 4 我希望从 2016 年 2 月到 2017 年 1 月的所有月份都展示此广告系列
app.filter('dateFilter', function () {
return function (campaigns, year, month) {
var filtered = [];
if (!campaigns)
return null;
for (var i = 0; i < campaigns.length; i++) {
var startDate = new Date(campaigns[i].startTime);
var endDate = new Date(campaigns[i].endTime);
if ( Validation )
filtered.push(campaigns[i]);
}
return filtered;
};
});
【问题讨论】:
-
只用.getTime和Date.now来比较,
-
发送到函数的月份和年份不是 date.now。用户可以选择按月和年过滤结果。所以 Date.not 帮不了我。
-
嗯,你可以很容易地创建一个这样的日期:new Date('2015-01-01T18:00:00'),这样你就可以用.getTime得到一个时间戳,然后比较时间戳。
-
另外,如果您使用的是 ES2015,最好使用数组的 map 方法或 filter 方法。一个 ES2015 解决方案看起来像 filters = campaign.filter(campaign => { const filterDate = new Date(
${year}-${month}-01T00:00:00); return campaign[i].startTime filterDate; }); es6fiddle.net/ikbli17q -
对于大多数人来说,2/1/16 是 1 月 2 日。
标签: javascript date angular-filters