代码之家  ›  专栏  ›  技术社区  ›  Rajat.r2

Ionic typeScript中没有排序的特定日期范围

  •  0
  • Rajat.r2  · 技术社区  · 5 年前

    日期b/w 2020年4月26日至2020年4月30日排序不正确。。

    1) 我有一个像

    [
      {
        "dateAndTime": "05/05/2020 09:00:00"
      },
      {
        "dateAndTime": "26/04/2020 09:00:00"
      },
      {
        "dateAndTime": "25/05/2020 09:00:00"
      }
    ]
    

    2) 排序代码

             this.myArray.sort((a: MyDateClass ,b: MyDateClass) => (b.dateAndTime <= a.dateAndTime ? -1 : 1) );
    

    3) 出口类

    export class MyDateClass {
     public dateAndTime: Date;
    }
    

    4) 预期产量

    25/05/2020 09:00:00
    05/05/2020 09:00:00
    26/04/2020 09:00:00
    

    5) 获得产出

    26/04/2020 09:00:00
    05/05/2020 09:00:00
    05/05/2020 09:00:00
    

    如果我包括数组日期,还有一些额外的情况 28,29,26,27,30 四月,它会像 26,27,28,29,30

    日期b/w 26至4月30日的具体范围有什么问题?

    注: 这是爱奥尼亚3,这个问题在safari、Firefox和Chrome上进行了测试

    更新 我也尝试在下面提到可能的解决方案,但最新的时间不是排序。

     let data=[ { "dateAndTime": "05/04/2020 09:00:00" }, { "dateAndTime": "05/04/2020 09:10:00" }, { "dateAndTime": "05/04/2020 09:09:22" },{ "dateAndTime": "05/05/2020 09:00:00" }, { "dateAndTime": "05/05/2020 09:09:22" }];
    let result =  data.sort((a,b) => {
      let aa = new Date(a.dateAndTime.slice(0,10).split('/').reverse().join('/'));
      let bb = new Date(b.dateAndTime.slice(0,10).split('/').reverse().join('/'));
      return (bb <= aa ? -1 : 1);
      // return (aa <= bb ? 1 : -1);
    });
    console.log('Sorted___', result);
    

    输出

    0: Object { dateAndTime: "05/05/2020 09:00:00" }
    
    1: Object { dateAndTime: "05/05/2020 09:09:22" } //This will be come at place of object 0:first
    
    2: Object { dateAndTime: "05/04/2020 09:00:00" }
    
    3: Object { dateAndTime: "05/04/2020 09:10:00" }  // here this will be come at place of object 2:
    
    4: Object { dateAndTime: "05/04/2020 09:09:22" }
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Rajneesh    5 年前

    看来这是因为日期无效

    var data=[{ "dateAndTime": "05/04/2020 09:00:00" },{ "dateAndTime": "05/04/2020 09:10:00" },{ "dateAndTime": "05/04/2020 09:09:22" }, { "dateAndTime": "05/05/2020 09:00:00" }, { "dateAndTime": "05/05/2020 09:09:22" }];
    
    result = data.sort((a,b)=>{
      aa = new Date(a.dateAndTime.slice(0,10).split('/').reverse().join('/') + a.dateAndTime.slice(10));
      bb = new Date(b.dateAndTime.slice(0,10).split('/').reverse().join('/') + b.dateAndTime.slice(10));
      return bb - aa;
    });
    
    console.log(result);