【问题标题】:Sort formating date in DataTable Angular在 DataTable Angular 中排序格式化日期
【发布时间】:2018-09-04 15:28:03
【问题描述】:

我有我的 API,我使用 HTTP GET 获取它使用 Date 类型我可以对列进行排序,但这里的问题是我得到以下格式的格式

2018 年 9 月 3 日星期一 01:56:36 GMT-0700(太平洋夏令时间(墨西哥))

当我尝试使用像 09/03/2018 01:56:36 这样的格式化日期时,如果我以这种格式运行数据表,排序将不起作用,因为它排序为 String 而不是 Date强>

我的问题是:如何将日期类型格式化为 MM/DD/YYYY hh:mm:ss ??

注意:我使用 ng2-smart-table 作为数据表

【问题讨论】:

    标签: angular ng2-smart-table


    【解决方案1】:

    根据documentation

    您可以为任何字段声明预渲染函数valuePrepareFunction。 所以,你可以直接导入 DatePipe:

    import { DatePipe } from '@angular/common';

    并在valuePrepareFunction 声明中返回new DatePipe('en-US').transform(date, 'your-format-here');

    【讨论】:

    • 谢谢你的回答对我帮助很大。
    • 这行得通吗?我有这种格式日期"2019-10-01T08:52:45.563" 并使用 DatePipe 格式化日期并将其返回到 valuePrepareFunction 但排序仍然不起作用。
    • @AbelValdez 这是正确的吗? ` lastLoginTime: { title: 'Last Login', width: '15%', filter: false, valuePrepareFunction: (lastLoginTime: any) => { return lastLoginTime? new DatePipe('en-US').transform(lastLoginTime, 'M/d/yyyy') : new DatePipe('en-US').transform('2019-12-03T08:52:45.563', 'd/ M/yyyy'); } }, `
    【解决方案2】:

    不要格式化日期。让它作为时间戳,并使用valuePrepareFunction 将时间戳转换为格式化日期。

    如果它已经是你正在做的,那么我可以看到排序使用准备好的值而不是原始值。

    在这种情况下,排序时使用compareFunction再次转换时间戳中的日期。

    https://akveo.github.io/ng2-smart-table/#/documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-22
      • 2019-12-15
      • 2021-05-08
      • 2020-10-26
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多