О datetimefield в формате UTC

#extjs

#extjs

Вопрос:

Я новичок в ExtJS. У меня есть 2 datecolumns, которые я хотел бы иметь в формате UTC. Для этого я использую (из Интернета) :

  renderer: function (value) {
                      return moment.utc(value).format('YYYY-MM-DD HH:mm:ssZZ');
              },
 

2 datecolumns определяются следующим образом :

       ..., {
            xtype: 'datecolumn',
            header: 'Start Date',
            dataIndex: 'start_date',
            flex: 1,
            editor: {
                xtype: 'datetimefield',
                itemId: 'startdt',
                allowBlank: false,
                format: 'd/m/Y H:i:s',
            },
        renderer: function (value) {
                      return moment.utc(value).format('YYYY-MM-DD HH:mm:ssZZ');
              },
           },
       {
            xtype: 'datecolumn',
            header: 'End Date',
            dataIndex: 'end_date',
            flex: 1,
            editor: {
                xtype: 'datetimefield',
                itemId: 'enddt',
                allowBlank: false,
            format: 'd/m/Y H:i:s',  
            },
        renderer: function (value) {
                      return moment.utc(value).format('YYYY-MM-DD HH:mm:ssZZ');
              },
           },...
 

Для модели :

 Ext.define('xxxxx.model.Deployment', {
    extend: 'Ext.data.Model',
    fields: [{ 
        name: 'id', 
        type: 'int',
        persist: true
    }, { 
        name: 'name', 
        type: 'string' 
    }, { 
        name: 'start_date', 
        type: 'date',
    }, { 
        name: 'end_date', 
        type: 'date'
    }, ...
 

Когда я нажимаю на одно из полей datetimefield, чтобы отредактировать его, он добавляет один час, который соответствует местному времени (французскому), и формат отличается :

Отображение : введите описание изображения здесь

Издание : введите описание изображения здесь

Пожалуйста, как предотвратить это во время редакции? Я потратил почти 2 дня, пытаясь это исправить…

Спасибо за любую помощь

Карим

Ответ №1:

Попробуйте ввести ‘moment.utc (значение).формат (‘ГГГГ-ММ-ДД ЧЧ: мм: ssZZ’);’ при преобразовании или вычислении модели. Что-то вроде:

 { 
    name: 'end_date', 
    type: 'date',
    convert: function(value) { // or calculate, have a look in the api doc
        return moment.utc(value).format('YYYY-MM-DD HH:mm:ssZZ');
    }
}
 

После этого удалите часовой пояс conv из средства визуализации.

Комментарии:

1. Спасибо, я попробовал это.поля datetime больше не сохраняются (null), и как только они установлены в форме, они снова преобразуются

2. Вы удалили логику utc из средства визуализации? В любом случае, пожалуйста, создайте какой-нибудь пример в fiddle, вам трудно помочь без рабочего кода.