对于数组中的每个对象,我都有一个来自数据库的 dateCreated 为 2015-12-11T11:12:14.635Z
我想过滤上周和上个月的数组
问题是如果今天是 3 月 19 日,我要从 11 日到 18 日搜索过去 7 天,这似乎是通过计算 24 小时 * 7 来搜索过去 7 天,我的搜索需要从 00:00 开始:01 每天。
现在我第一次想首先计算上周.. 基于当前日期使用 moment.js 然后我将其转换为上述格式,以便我可以过滤数据
基本上,我想根据当前时间戳计算上周。
对于数组中的每个对象,我都有一个来自数据库的 dateCreated 为 2015-12-11T11:12:14.635Z
我想过滤上周和上个月的数组
问题是如果今天是 3 月 19 日,我要从 11 日到 18 日搜索过去 7 天,这似乎是通过计算 24 小时 * 7 来搜索过去 7 天,我的搜索需要从 00:00 开始:01 每天。
现在我第一次想首先计算上周.. 基于当前日期使用 moment.js 然后我将其转换为上述格式,以便我可以过滤数据
基本上,我想根据当前时间戳计算上周。
日期应该是:
var last7DayStart = moment().startOf('day').subtract(1,'week');
var lastMonthThisDay = moment().startOf('day').subtract(1,'month');
var yesterdayEndOfRange = moment().endOf('day').subtract(1,'day');
那么如果它是一个 javascript 过滤器,我会使用lodash并执行以下操作:
var javascriptArrayOfObjectsWithDates = [
{ date : '2015-12-11T11:12:14.635Z', anotherProperty: 0 },
{ date : moment().subtract(1, 'day' ).format(), testThis: 'works!'}
];
var filteredObjects = _.filter(javascriptArrayOfObjectsWithDates,
function(each){
return moment(each.date)
.isBetween(last7DayStart, yesterdayEndOfRange) ;
});
我确实喜欢这个..它对我有用..
_this.lastWeek = function () { var result = moment().subtract(7,'days').hours(0); return result._d; }; _this.lastMonth = function () { var result = moment().subtract(30,'days').hours(0); return result._d; };
然后我使用 underscoreJS 过滤了我的数组..(你也可以使用 loadash)..
_this.thisWeekData = _.filter(_this.inbox, function(inbox) { return (moment(inbox.createdAt) > _this.lastWeek()); }); _this.lastWeekData = _.filter(_this.inbox, function(inbox) { return ((moment(inbox.createdAt) < _this.lastWeek()) && (moment(inbox.createdAt) > _this.lastMonth())); }); _this.lastMonthData = _.filter(_this.inbox, function(inbox) { return (moment(inbox.createdAt) < _this.lastMonth()); });
如果您不想在控制器中做所有这些事情,那么有各种过滤器的角度库..您可以直接在 html 中使用它..“ Angular-filter ”
谢谢大家的支持。。
这应该让您到达 7 天前 00:00:00 的时间点
var time7daysAgo = moment().subtract(7,'days').startOf('day');
var time30daysAgo = moment().subtract(30,'days').startOf('day');
之后,您只需格式化为您喜欢的任何内容。对毫秒的 unix 时间戳说:
var time7daysAgoMiliseconds = time7daysAgo.format('x');
在这一点之后,数字比较非常方便。