【问题标题】:Formatting date without time for jQuery datatable为jQuery数据表格式化没有时间的日期
【发布时间】:2019-02-26 20:15:52
【问题描述】:

我正在尝试以仅日期格式显示来自 SQL 数据库的日期,没有时间信息并且不会丢失排序功能。

我尝试了不同的方法,但仍然无法让该死的东西发挥作用。

  1. 我尝试在 SQL 查询中将日期转换为没有时间:

    select ..., CAST(t.StartDate AS DATE) StartDate, ...
    
  2. 我尝试了一个 javascript 函数来转换为日期字符串;可以很好地显示,但在数据表中排序类似于字符串而不是日期:

    function stringToDatestamp(dateString) {
        var date = new Date(dateString);
    
        var yr = date.getFullYear();
        var mo = date.getMonth() + 1;
        var d = date.getDate();
        var month = mo < 10 ? '0' + mo : mo;
        var day = d < 10 ? '0' + d : d;
        var newDateString = month + '/' + day + "/" + yr;
        return newDateString;
    }
    
    "columnDefs": [
        ....
        {
            "targets": [6],
            "render": function (data, type, row) {
                if (null == data)
                    return data;
                return stringToDatestamp(data);
            }
        }
    ],
    
  3. 试过“moment.js”格式化程序:

    function stringToDatestamp(dateString) {debugger
        var date = moment(dateString).format("MM/dd/yyyy");
        return date;
    }
    
    // This display 2018-10-26T00:00:00 as 10/Fr/yyyy
    

没有任何格式,数据显示为 2018-10-26T00:00:00,即使在 SQL 查询中我使用了 CAST。

【问题讨论】:

    标签: jquery datetime datatables


    【解决方案1】:

    不确定这是否会有所帮助,但您可能需要考虑toLocaleDateString()

    这比你的 stringToDatestamp 函数更简洁。

    例子:

    var date = new Date();
    var today = date.toLocaleDateString();
    console.log('today is:', today)

    对于您的表格,也许您可​​以将每个单元格的值保留为原始数据对象以进行排序,然后在 html 中显示 toLocaleDateString() 的结果。

    【讨论】:

    • 但似乎我最终会得到一个字符串,当我按该日期列排序时,它的行为将不正确。
    【解决方案2】:

    我在问题中列出的第三个选项(部分)正确。我使用 MM/dd/yyyy 作为格式字符串,但在 moment.js 中,正确的字符串是 MM/DD/YYYY。

    一旦我注册了格式,我就可以正常工作了。

    $(document).ready(function () {
        //register the date/time format(s) that you wish DataTables to detect and order 
        $.fn.dataTable.moment('MM/DD/YYYY');
        ....
    })
    

    然后在渲染器中:(第 7 列是我的日期)

    "columnDefs": [
        {
            "targets": [6],
            "render": function (data, type, row) {
                if (null == data)
                    return data;
                return stringToDatestamp(data);
            }
        }
    ],
    

    Javascript:

    function stringToDatestamp(dateString) {
        var date = moment(dateString).format("MM/DD/YYYY");
        return date;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      相关资源
      最近更新 更多