Форматирование даты без времени для jQuery datatable - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь отобразить дату, поступающую из базы данных 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. Пробный форматирующий момент "*. 101":

    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.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Третий вариант, который я перечислил в своем вопросе, был (частично) правильным.Я использовал MM / dd / yyyy в качестве строки формата, но в момент.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;
}
0 голосов
/ 22 сентября 2018

Не уверен, поможет ли это, но вы можете рассмотреть toLocaleDateString()

Это более кратко, чем ваша функция stringToDatestamp.

Пример:

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

Возможно, для вашей таблицы вы можете сохранить значение каждой ячейки в качестве исходного объекта данных для целей сортировки, а затем отобразить результат toLocaleDateString () в html.,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...