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}</>}
  />