Extjs日期格式问题safari firefox

时间:2014-05-20 13:40:13

标签: google-chrome date firefox extjs safari

日期以格式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获取日期格式?

非常感谢提前。

凯文

1 个答案:

答案 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);