PrimeVue数据表列排序不适用于日期



我有一个DataTable,如下所示:

<DataTable
:rows = "5"
:value = "apiItems"
>
<Column
:field="initialDate"
:header="Initial Date"
:sortable="true"
/>

<Column
:field="finishDate"
:header="Finish Date"
:sortable="true"
/>
</DataTable>

initialDate和finishDate都是从API调用中提取的数据字段,看起来如下:"08/21/2022 11:43:12";

当我尝试对这些列进行排序时,它们不会按实际日期(这正是我所需要的(进行排序,而是只按字符串中的第一个数字(即月份(进行排序

它的作用:

Ascending:
"08/22/2021 11:43:12"
"07/01/2022 12:01:09"

我需要什么:

Ascending:
"07/01/2022 12:01:09"
"08/22/2021 11:43:12"

我尝试过的:试图将已经存在的日期转换为JS Data对象,例如:new date(initialDate(.toLocaleString((。排序不正确。

感谢您的协助。

要对日期进行排序,您必须能够对它们进行比较,最好的方法是将它们转换为时间戳(自1970年1月1日00:00:00 UTC以来经过的毫秒数(

const date1 = new Date('08/22/2021 11:43:12')
const date2 = new Date('07/01/2022 12:01:09')

您可以使用getTime((方法或一元加号(+(运算符检索Date对象的时间戳。

console.log(date1.getTime()) // 1629603792000
console.log(+date2) // 1656648069000

升序排序

使用sort((方法进行排序非常容易。

console.log([date1, date2].sort((a,b) => +b - +a))

完整示例

const date1 = new Date('08/22/2021 11:43:12')
const date2 = new Date('07/01/2022 12:01:09')
console.log([date1, date2].sort((a,b) => +b - +a))

最新更新