ExtJS: Поле даты записывает дату один день назад? - PullRequest
0 голосов
/ 05 июня 2018

Я использую 'Ext.form.field.Date' и в процессе CRUD записывает заданную дату как один день назад.Я имею в виду, если я выберу 05 June 2018, он будет записан как 04 June 2018.

Я проверил родственные model и widget, но ничто не кажется странным!Почему это может быть?

Вот оператор модели и поле;

Ext.define('MyApp.FooModel', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'mydatefld', type: 'date', dateReadFormat: 'c', dateWriteFormat: 'Y-m-d'},

//and implementation
Ext.define('MyApp.BaseDateFld', {
    extend: 'Ext.form.field.Date',
    xtype: 'basedatefld',
    format: 'd.m.Y',
    flex: 1,
    labelAlign: 'right',
    name: 'MyDate Fld',
    fieldLabel: 'MyDate Fld',
    bind: '{currRec.mydatefld}'
});

Каждый раз, когда сохраняется дата, как в полезной нагрузке XHR-запроса;

2018-06-05T21:00:00.000Z //But should be 2018-06-06T06:05:00.000Z

Обновление: я пытался изменить dateWriteForm на 'Y-m-d H:i:s' и 'Y-m-d H:i', но все еще отмечал изменения на payload и продолжал уменьшаться один день и установил время на 21:00:00

Также пыталсязамените TS компьютера на другой, как рекомендовано @ Alexander , но ничего не изменилось.

Обновление 2: Я преодолел текущую проблему, но на самом деле очень СУХОЕ решение,так не безопасно!

Ниже приведен insertion метод (update метод почти такой же, как этот) и форматирование соответствующего значения date здесь, таким образом, стало успехом.

Сервер, принимающий формат date для этого поля как Гм , поэтому я указал dateWriteFormat на model и submitFormat на datefield как 'Гм-д ', но он продолжает записывать значение даты с помощью timestamp.

Когда я проверяю rec параметр в методе, он выглядит как 2018-06-06T21:00:00.000Z (Часть TZ не должна быть здесь!).И store param изменяет givin date на один выходной день как 2018-06-05T21:00:00.000Z.

Все еще не уверен, почему я не могу преобразовать / отформатировать через model или field.Спасибо за советы.

recInsertion: function (rec, store) {
        store.getProxy().url = store.getProxy().api.create;       
        rec.data.givindate = Ext.Date.format(rec.data.mydate, 'Y-m-d'); //This is current solution to format date! Which is really not safe and will cause DRY.         
        Ext.Ajax.request({
            url: store.proxy.url,
            method: 'POST',
            jsonData: JSON.stringify(rec.data),
            callback: function (options, success, response) {
                Ext.GlobalEvents.fireEvent('showspinner');
                if (success) {
                    Ext.GlobalEvents.fireEvent('refreshList');
                }
                else
                    Ext.GlobalEvents.fireEvent('savefailed');
            }
        });
    },
...