我正在使用'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
尽管 @Alexander 建议将其改变为另一个,但没有改变。
更新2: 我已经结束了当前的问题,但实际上是一个非常干燥的解决方案,所以不安全!
下面有insertion
方法(update
方法与此几乎相同)并在此处格式化相关的date
值,从而获得成功。
服务器接受此字段的date
格式为 Ymd ,因此我在dateWriteFormat
和model
submitFormat
上datefield
说明了timestamp
1}}作为'Ym-d',但它会一直用rec
写日期值。
当我在方法上检查2018-06-06T21:00:00.000Z
param时,它是store
(TZ部分不应该在这里!)。并且date
param会将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');
}
});
},
。
谢谢你的建议。
package.json