我的表格如下:
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,然后,如何对该列进行排序?
答案 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);