Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 分拣日期(Y-M-D h-M-s)分拣不正确_Javascript_Date - Fatal编程技术网

Javascript 分拣日期(Y-M-D h-M-s)分拣不正确

Javascript 分拣日期(Y-M-D h-M-s)分拣不正确,javascript,date,Javascript,Date,我有一个要按创建日期排序的对象列表。 这是我的相关代码: dateToLocalString(date) { date = new Date(date); const year = date.getFullYear(); const month = date.getMonth() < 10 ? "0" + date.getMonth() : date.getMonth(); const day = date.getDate() < 10 ? "0"

我有一个要按创建日期排序的对象列表。 这是我的相关代码:

  dateToLocalString(date) {
    date = new Date(date);
    const year = date.getFullYear();
    const month = date.getMonth() < 10 ? "0" + date.getMonth() : date.getMonth();
    const day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
    const hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
    const minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
    const seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : 
    date.getSeconds();

    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  }

 const AscOrder = function x(order) {
      return function(a, b) {
        if(order === 'status') {
          if(a[order].split(' ')[1] < b[order].split(' ')[1]) return -1;
          if(a[order].split(' ')[1] > b[order].split(' ')[1]) return 1;
          return 0;
        }
        if(a[order] < b[order]) return -1;
        if(a[order] > b[order]) return 1;
        return 0;
      };
    };


switch (this.state.sortDevSpacesBy) {
  case 'CREATED' : devSpaceList.sort(AscOrder('createdAt'));
    break;
  case 'CREATED_DESC' : devSpaceList.sort(DescOrder('createdAt'));
    break;
}
dateToLocalString(日期){
日期=新日期(日期);
const year=date.getFullYear();
const month=date.getMonth()<10?“0”+date.getMonth():date.getMonth();
const day=date.getDate()<10?“0”+date.getDate():date.getDate();
const hours=date.getHours()<10?“0”+date.getHours():date.getHours();
const minutes=date.getMinutes()<10?“0”+date.getMinutes():date.getMinutes();
const seconds=date.getSeconds()<10?“0”+date.getSeconds():
date.getSeconds();
返回`${year}-${month}-${day}${hours}:${minutes}:${seconds}`;
}
常量AscOrder=函数x(顺序){
返回函数(a,b){
如果(订单=='状态'){
如果(a[order].split(“”)[1]b[order].split(“”)[1])返回1;
返回0;
}
如果(a[订单]b[订单])返回1;
返回0;
};
};
开关(this.state.sortDevSpacesBy){
案例“已创建”:devSpaceList.sort(AscOrder('createdAt');
打破
案例“CREATED_DESC”:devSpaceList.sort(DescOrder('createdAt');
打破
}
但是它没有正确地对我的日期排序,Y-M-D排序正确,但是时间似乎有问题:

降序排列: - 2018-04-24 12:53:50 - 2018-05-15 15:21:15 - 2018-05-15 15:03:04
-2018-05-15 11:55:07

出于这样的原因,我通常在排序之前将所有日期转换为时间(从历元开始);e、 g:

let d = new Date()
d.getTime() //-> 1529070578437
这有效地消除了许多棘手的边缘情况(如闰年)和其他复杂的转换例程


我尽可能使用这种格式的日期,并仅在必要时转换;e、 例如,以其区域设置格式向用户显示。

您是否有iso日期?如果是这样的话,你可以不用其他工具,通过字符串进行排序。我认为你应该尝试提供一个更简短的例子。我缩小了例子的规模@Nina Scholz我不知道这是否是ISO日期,我会看一看谢谢。@Jérémy,看一看:这有点棘手,因为我正在以这种方式更改日期的结构:
${year}-${month}-${day}${hours}:${minutes}:${seconds}
。如果我使用getTime(),它会删除日期,只保留时间,我想这很正常,但我不知道它能帮我什么忙。^o.o?getTime()提供自纪元:01 Jan 1970 00:00:000起的毫秒(ms)。使用它进行排序,然后使用其他方法以您喜欢的格式显示。记住,“时间是一种幻觉,午餐时间更是如此。”——道格拉斯·亚当斯,《银河系漫游指南》。哦,是的,我知道了,谢谢!我对“大纪元”这个词有点困惑,作为一个说法语的人,我不知道这个词。啊哈,银河系搭便车指南,这是一个有趣的参考资料!^喜欢很高兴我能帮忙。无需编写所有复杂的排序代码;这会让你的生活轻松很多。此外,最好使用罐装分拣程序,而不是自己滚动。您应该能够使用一些库(lodash、下划线等)中的(n)log(n)复杂度排序