首页 > 解决方案 > 关于 UTC 格式的日期时间字段

问题描述

我是 ExtJS 的新手。我有 2 个日期列,我想采用 UTC 格式。为此,我使用(来自网络):

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

2 个日期列的定义如下:

      ..., {
            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'
    }, ...

当我单击其中一个日期时间字段进行编辑时,它会增加一小时,对应于当地时间(法国),格式不一样:

展示 :在此处输入图像描述

版本:在此处输入图像描述

请问在编辑过程中如何防止这种情况?我花了将近 2 天的时间试图解决这个问题......

谢谢你的帮助

卡里姆

标签: extjs

解决方案


尝试把'moment.utc(value).format('YYYY-MM-DD HH:mm: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');
    }
}

之后从渲染器中删除时区转换。


推荐阅读