我有一个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))