Ext JS 6.2,如何将日期转换为sql格式:2017-08-25 16:34?

时间:2017-08-31 07:46:11

标签: javascript datetime extjs datepicker sencha-touch

我正在使用Ext Js v6.2 Grid,在我的应用程序中,我有Datetimefield,对于用户我显示日期格式为

format: 'd/m/Y H:i'

但是在向sql提交数据时,我需要转换为sql格式,

format: 2017-08-25 16:34 

这是我的代码,我的输出为2016-03-14T18:30:00.000Z但我需要format: 2017-08-25 16:34

如果我错了,请更正我的代码,我搜索了文档和其他没有帮助的内容。

var headerObj = page.getForm().getFieldValues();
var hdrData = "<HeaderData>" + x2js.json2xml_str(headerObj)" +</HeaderData>";
console.log(hdrData);
{
  xtype: 'datefield',
  border: true,
  width: '100%',
  fieldLabel: 'somefield',
  name: 'somefield',
  format: 'd/m/Y H:i',
  submitFormat: 'Y-m-d H:i',
}

3 个答案:

答案 0 :(得分:0)

ExtJS没有提供这样做的功能。您必须创建一个转换日期的自定义函数:

http://example.com/delete.php

答案 1 :(得分:0)

tabLayout.getTabAt(i).setIcon(); 方法返回模型数据。模型数据旨在与商店模型一起使用,商店模型通常可以使用javascript日期,因此,该函数从datefields返回javascript日期。仅在序列化期间,javascript日期然后使用浏览器默认值转换为字符串(因为序列化函数已经预期输入仅为字符串)。

您可能想要尝试的是getFieldValues。此函数将返回所有字段的字符串值;如果是日期字段,则使用form.getSubmitData格式化日期。

第二种可能性是使用模型提交,而不是表单。

使用代理加载/保存操作定义模型:

submitFormat

然后创建新记录并进入表单:

Ext.define('MyModel',{
    extend: 'Ext.data.Model',
    fields:[{
        name: 'somefield',
        type: 'date',
        dateFormat: 'Y-m-d H:i'
    }],
    proxy: {
        url: '...'
    }
})

或从服务器编辑现有记录:

form.loadRecord(Ext.create('MyModel'))

然后再将其保存到服务器:

MyModel.load(id, {
    success: function(record) {
        form.loadRecord(record);
    }
})

这有一个很好的副作用,你可以将ExtJS的原始XML阅读器和编写器添加到你的模型代理,你可以取消自己的XML转换功能。

答案 2 :(得分:0)

在ExtJs中,docs表单有使用 getValues 获取表单所有值的方法。您可以参考ExtJs docs

我已经创建了一个小型演示来向您展示它是如何工作的。

Sencha fiddle

Ext.create('Ext.form.Panel', {
    renderTo: Ext.getBody(),
    width: 300,
    bodyPadding: 10,
    title: 'Date',
    margin: 10,
    items: [{
        xtype: 'datefield',
        anchor: '100%',
        fieldLabel: 'From',
        format: 'd/m/Y H:i',
        submitFormat: 'Y-m-d H:i',
        allowBlank: false,
        name: 'date'
    }, {
        xtype: 'button',
        text: 'Submit Date',
        formBind: true,
        handler: function () {
            var date = this.up('form').getValues().date;
            /* this is also one way to get value by date field.
                date =this.up('form').down('datefield').getValue(),
                submittedDate = Ext.Date.format(date,'Y-m-d H:i');
            */
            Ext.Msg.alert('Success', `Selected date is <b>${date}</b>`);
        }
    }]
});