Datacolumns中字符串格式的日期列的排序
Sorting of Date column which is in string format in Datacolumns
我有一个 React 应用程序,其中 Datatable.Columns 用于在页面上呈现 table。
<div data-test={"Order-Status"}>
<DataTable data={GetData}>
{this.displayColumns()}
</DataTable>
</div>
displayColumns = () => {
return this.state.selectedColumns.map((col) => {
if (col.selected) {
return (
<DataTable.Column
field={col.value}
header={col.text}
className={col.className}
sortable={true}
/>
);
}
return undefined;
});
};
const GetData = (this.props.order || []).map((item) => {
return {
...item,
OrderDate: item.OrderDate(item.orderDate),
};
});
get OrderDate(timeStamp: number | string) {
if (!timeStamp) return '';
const date = timeStamp.toString().length >= 13 ? new Date(+timeStamp) : new Date(+timeStamp * 1000);
const offset = (date.getTimezoneOffset() / -60) .toString().split('.');
return date.getFullYear() + '.'
+ (Number(date.getMonth()) + 1)
+ '.' + date.getDate()
+ ' - ' + date.toLocaleTimeString(navigator.language, { hour: '2-digit', minute: '2-digit' })
+ ` (${offset[0]}:${offset[1] ? 60 * Number('0.' + offset[1]) : '00'} UTC)`;
}
数据库中的时间是EPOCH时间。所以我们将它转换成人类可读的时间格式,这是一个字符串并显示。但是这个日期的排序没有按预期工作。由于日期的值在 string 中,因此它根据 String.
对值进行排序
如何通过将日期从字符串转换为日期来对日期进行排序。
你需要的是将原始字段设置为 field
属性 然后格式化 Column
的 body
部分
请参阅下面的示例。
<Column sortable
field="your_date_field"
body={rowData => <>{formatDate(rowData.your_date_field}</>}
/>
我有一个 React 应用程序,其中 Datatable.Columns 用于在页面上呈现 table。
<div data-test={"Order-Status"}>
<DataTable data={GetData}>
{this.displayColumns()}
</DataTable>
</div>
displayColumns = () => {
return this.state.selectedColumns.map((col) => {
if (col.selected) {
return (
<DataTable.Column
field={col.value}
header={col.text}
className={col.className}
sortable={true}
/>
);
}
return undefined;
});
};
const GetData = (this.props.order || []).map((item) => {
return {
...item,
OrderDate: item.OrderDate(item.orderDate),
};
});
get OrderDate(timeStamp: number | string) {
if (!timeStamp) return '';
const date = timeStamp.toString().length >= 13 ? new Date(+timeStamp) : new Date(+timeStamp * 1000);
const offset = (date.getTimezoneOffset() / -60) .toString().split('.');
return date.getFullYear() + '.'
+ (Number(date.getMonth()) + 1)
+ '.' + date.getDate()
+ ' - ' + date.toLocaleTimeString(navigator.language, { hour: '2-digit', minute: '2-digit' })
+ ` (${offset[0]}:${offset[1] ? 60 * Number('0.' + offset[1]) : '00'} UTC)`;
}
数据库中的时间是EPOCH时间。所以我们将它转换成人类可读的时间格式,这是一个字符串并显示。但是这个日期的排序没有按预期工作。由于日期的值在 string 中,因此它根据 String.
对值进行排序
如何通过将日期从字符串转换为日期来对日期进行排序。
你需要的是将原始字段设置为 field
属性 然后格式化 Column
body
部分
请参阅下面的示例。
<Column sortable
field="your_date_field"
body={rowData => <>{formatDate(rowData.your_date_field}</>}
/>