ExtJs 4 Отображение WCF DateTime - PullRequest
       6

ExtJs 4 Отображение WCF DateTime

1 голос
/ 07 сентября 2011

Я не могу понять, как преобразовать дату и время, которые выводит wcf, в дату и время, которые могут использовать ExtJ.Я нашел много статей об этом, но они все для ExtJs 3, и я не мог заставить его работать с 4.

Я нашел этот код, но я не знаю, как я мог бы использовать его дляконвертируйте все в моем JsonStore.

    //this method is used to convert the MS JSON date format to the ExtJS Grid Date Column Value
function dateFormatter(dt) {
    /// <summary>this method is used to convert the MS JSON date format to the ExtJS Grid Date Column Value</summary>
    /// <param name="dt">Actual JSON Date Value</param>
    try {
        //microsoft JSON date format needs to convert into Javascript date
        var newdata = dt.replace(/\/Date\((-?[0-9]+)([+-][0-9]+)?\)\//g, "new Date($1)");
        newdata = eval('(' + newdata + ')');
        return newdata.format('m/d/Y');
    }
    catch (e) {
        return dt;
    }
}

Ответы [ 2 ]

4 голосов
/ 08 сентября 2011

В отличие от Ext JS 3, Ext JS 4 не расширяет собственный объект Date.Вместо этого он предоставляет Ext.Date.Поэтому вместо:

date.format('m/d/Y');

вместо этого вы должны использовать:

Ext.Date.format(date, 'm/d/Y');

Кроме того, использование eval () в большинстве случаев является действительно плохой идеей.Этот код не является исключением.

И если вы отбрасываете eval, try-catch также не нужен.

Наконец, функция, которая одновременно анализирует дату и преобразует ее в другой форматделать слишком много.Часто вам нужно отображать одну и ту же дату в разных форматах в разных частях вашего приложения.Поэтому я бы предпочел просто иметь функцию, которая анализирует формат даты WCF в объект данных JavaScript.А затем используйте преобразование объекта Date в определенный строковый формат в том самом месте, где это необходимо.

Удаление всех посторонних вещей, вот что я получаю:

function parseWcfDate(dt) {
    var milliseconds = dt.replace(/\/Date\((-?[0-9]+)([+-][0-9]+)?\)\//, "$1");
    return new Date(parseInt(milliseconds, 10));
}

В любом случае, все этослишком много проблем ... Ext JS имеет встроенную поддержку для разбора дат в формате WCF:

Ext.Date.parse("/Date(1234567894560)/", "MS");

См. также:

0 голосов
/ 08 сентября 2011

Использование JSON.NET с JavaScriptDateConverter.

...