1

配列内のすべてのオブジェクトについて、データベースから 2015-12-11T11:12:14.635Z として dateCreated を取得しています。

先週と先月のその配列をフィルタリングしたい

問題は、今日が 3 月 19 日の場合、過去 7 日間の 11 日から 18 日までを検索する必要があり、それは 24 時間を計算して過去 7 日間を検索しているようです * 7 私の検索では 00:00 から開始する必要があります:01 毎日。

今、私は最初に先週を最初に計算したい.. moment.jsを使用して現在の日付に基づいてから、データをフィルタリングできるように上記の形式に変換します

基本的に、現在のタイムスタンプに基づいて先週を計算したいと思います。

4

3 に答える 3

6

日付は次のとおりです。

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) ;
                       });
于 2016-01-27T17:44:30.297 に答える
2

私はこれが好きでした..そしてそれは私のために働いています..

_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());
});

コントローラーでこれらすべてを実行したくない場合は、さまざまなフィルター用の angular ライブラリがあります..html で直接使用できます..「Angular-filter

angular-filter ライブラリのリンクはこちら

皆さん、ご支援いただきありがとうございます..

于 2016-01-28T06:36:34.340 に答える
1

これにより、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');

この時点以降、数値の比較は非常に便利です。

于 2016-01-27T13:40:50.537 に答える