форматирование даты без назначения новых данных из строки - PullRequest
0 голосов
/ 07 марта 2019

У меня есть таблица, как показано ниже:

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))); 

      });
  }

, но приведенный выше код дает синтаксическую ошибку, как мне преобразовать каждое значение в столбце даты изСтрока до даты, то, как мне отсортировать этот столбец?

Ответы [ 3 ]

2 голосов
/ 07 марта 2019

Ваш формат даты американский (ММ / ДД / ГГГГ), поэтому вы можете передать его прямо в конструкторе. (Это ужасный формат, потому что полмира использует DD / MM, и вы не всегда можете увидеть, глядя. Не можете ли вы отправить его как ISO?)

Когда у вас есть массив объектов, каждый со свойством даты, сделайте это ...

myArray.sort((a,b) => a.dateColumn.getTime() - b.dateColumn.getTime())
2 голосов
/ 07 марта 2019

Попробуйте эту строку.нет необходимости использовать метод замены.

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 голос
/ 07 марта 2019

Ожидая, что формат даты в 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);
...