格式化日期未从字符串分配新数据

时间:2019-03-07 11:04:57

标签: javascript jquery angular typescript date

我的表格如下:

ID    DateColumn

1     3/7/2019 5:29:38 AM
2     3/8/2019 5:28:38 AM
3     3/7/2019 5:30:38 AM
4     3/7/2019 5:31:38 AM

当前日期列在绑定到网格时,在json对象中将其作为字符串处理。 我需要根据日期对这个json对象进行排序。因此,我需要将字符串转换为日期。

我尝试编写如下代码:

getServiceResults() {

    this.serviceCheckService.getResults(Appconfig.PageSize, Appconfig.PageNo).takeUntil(this.ngUnsubscribe).subscribe((data) => {

    this.resultData = data; 
            this.resultData.forEach(x => x.DateColumn = x.datecolumn.replace(new Date(x.DateColumn))); 

      });
  }

但是上面的代码给出了语法错误,我该如何将date列中的每个值从字符串转换为date,然后,如何对该列进行排序?

3 个答案:

答案 0 :(得分:2)

尝试此行。无需使用替换方法。

this.resultData.forEach(x => x.DateColumn = new Date(x.DateColumn)); 

对于数据排序,您可以使用以下代码:

resultData.sort((item1, item2) => { if(new Date(item1) < new Date(item2)) {return 1} else return -1;} )

答案 1 :(得分:2)

您的日期格式为美国(MM / DD / YYYY),因此您可以直接在构造函数中传递它。 (这是一种糟糕的格式,因为一半的世界使用DD / MM,而且您无法始终从外观上分辨出来。不能以ISO格式发送它吗?)

一旦有了一个对象数组,每个对象都有一个date属性,就可以执行此操作...

myArray.sort((a,b) => a.dateColumn.getTime() - b.dateColumn.getTime())

答案 2 :(得分:1)

期望日期格式为MM/DD/YYYY,您可以将所有字符串格式的日期转换为Date类型,然后进行排序。

// Convert string date to Date type
this.resultData.forEach(_d => _d.DateColumn = new Date(_d.DateColumn));

// Sort column based on date
this.resultData.sort((a, b) => a.DateColumn.getTime() < b.DateColumn.getTime() ? 1 : -1);