如何将日期设置为 sencha touch 的日期选择器

How to set date to sencha touch's date picker

我正在尝试将日期设置为日期选择器,但无法设置日期。 下面是我的 sencha touch 代码块。

this.scheduledDatePicker = Ext.create('Ext.field.DatePicker', {
            //label: 'To',
            //labelAlign: 'right',
            //cls: 'form-block',
            value: new Date(),
            flex: 2.6,

        });

并且我在页面加载后设置值或使用以下代码从数据库中获取值。我试了这么多,你可以看到注释代码。但无法设置此值。

var date= Ext.Date.format(Ext.Date.parse(this.rec.get('bookingDateTime'), "Y-m-d H:i:s"), "d/m/Y");
//var date= Ext.Date.parse(this.rec.get('bookingDateTime'));
//var date= this.rec.get('bookingDateTime');

this.scheduledDatePicker.setValue(date);

任何人都可以告诉我为什么我的代码不起作用或解决此问题的任何解决方案吗?

日期字段接受 javascript 日期,但您似乎没有提供日期。

您应该检查什么 this.rec.get('bookingDateTime') returns,以及如何修改该字段以获得 javascript 日期。

我希望您已经有了一个模型,您可以在其中将该字段指定为具有特定日期格式的日期类型:

Ext.define('MyModel', {
    fields: [{
        name: 'bookingDateTime',
        type: 'date',
        dateFormat: 'Y-m-d H:i:s' // specify format that is received from the server
    }]
});

然后 ExtJS 将为您进行转换,您可以只使用 setValue 而无需任何解析:

this.scheduledDatePicker.setValue(this.rec.get('bookingDateTime'));

如果您还没有模型,您仍然可以从 bookingDateTime 中读取字符串并时不时地对其进行解析,然后将其放入选择器中:

var date= Ext.Date.parse(this.rec.get('bookingDateTime'), "Y-m-d H:i:s");
console.log(date); // <- if date is null, format is not specified correctly.
this.scheduledDatePicker.setValue(date);

在这两种情况下,控制台记录中间结果可以帮助查明问题:大多数时候,"parsed date" 为空,因为格式字符串与从服务器收到的日期格式不匹配。