日期以格式YYYY-mm-dd hh:mm:ss
存储在数据库中。
e.g. 2014-07-03 00:00:00
但我希望我的Ext.Field.Date
具有以下格式:
Y-m-d H:i
根据我的组件设置:
xtype: 'datefield',
id: 'p_p_start',
fieldLabel: 'Planned Start',
name: 'plannedstart',
allowBlank: false,
vtypeText: 'Date not valid',
format: 'Y-m-d H:i',
我希望能够在Chrome以外的浏览器中显示日期,这是非常合理的。到目前为止,FireFox和Safari都不会显示任何内容。
我在SO上看了一个类似的问题,它通过在以下变体中拆分和重新组合字符串格式来建议支持所有浏览器:
var c=Ext.getCmp('p_p_start');
var st_date = "2014-05-08";// with alt formats changed Y-m-d, leaving time out diags
var dateParts = st_date.split(/-/);
var d = new Date(dateParts[0],parseInt( dateParts[1], 10) -1,dateParts[2]);
console.log("Date parts= " + dateParts);//Date parts= 2014,05,08
c.setValue( d ); //NOPE!
我对Chrome的进展感到非常满意(完全没有问题)但是还没有成功地在FF或Safari中工作(没有尝试IE,但它也必须在其中工作)。总而言之,问题是,
如何在所有浏览器中使用Y-m-d H:i
格式setValue
获取日期格式?
非常感谢提前。
凯文
答案 0 :(得分:2)
日期字段的内部值为JavaScript Date Object,与特定格式无关。 format
配置只是定义字段的显示和输入格式。
您可以使用setValue
字符串,但前提是该字符串已符合您定义的format
。
在您的情况下,问题似乎是将日期字符串值转换为从服务器/数据库收到的不同格式的日期字符串值。
查看Ext.Date
单例,特别是其函数Ext.Date.parse
,以实现这一目标:
var st_date = "2014-05-08";
var dateObj = Ext.Date.parse(st_date, "Y-m-d");
Ext.getCmp('p_p_start').setValue(dateObj);
var st_date2 = "2014-07-03 00:00:00";
var dateObj2 = Ext.Date.parse(st_date2, "Y-m-d H:i:s");
Ext.getCmp('p_p_start').setValue(dateObj2);