Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS:以单独的格式提交日期_Extjs_Extjs4 - Fatal编程技术网

ExtJS:以单独的格式提交日期

ExtJS:以单独的格式提交日期,extjs,extjs4,Extjs,Extjs4,我正在使用extjsv4.0 在客户端和服务器端之间维护日期格式确实令人困惑 用户需要自己的输入格式,但服务器通常要求提交为一种标准格式 它应该是ExtJS中的内置实现,但事实并非如此 我读过一些关于这个问题的解决方案,但它们只尝试解决日期字段格式问题(通过创建特殊的日期字段插件或扩展SubmitAction) 我正在寻找一个全球性的解决方案来格式化所有可以提交的日期(网格/商店编写器、表单/日期字段等) 因此,根据区域设置,日期可能具有自定义的显示格式,但它们将以一种标准格式(例如yyyy-m

我正在使用extjsv4.0

在客户端和服务器端之间维护日期格式确实令人困惑

用户需要自己的输入格式,但服务器通常要求提交为一种标准格式

它应该是ExtJS中的内置实现,但事实并非如此

我读过一些关于这个问题的解决方案,但它们只尝试解决日期字段格式问题(通过创建特殊的日期字段插件或扩展SubmitAction)

我正在寻找一个全球性的解决方案来格式化所有可以提交的日期(网格/商店编写器、表单/日期字段等)

因此,根据区域设置,日期可能具有自定义的显示格式,但它们将以一种标准格式(例如yyyy-mm-dd)提交

对这个问题有什么建议吗


非常感谢。

我不知道任何通用的、在代码中实现一次的解决方案。但是您可以编写一个函数,该函数将遍历patterns对象。有点像它所说的。您肯定需要添加更多的模式,并且必须在需要的地方单独实现它,例如:对于商店编写器,您可以在
beforesync
事件中使用它,但对于日期字段,您可以将其作为验证程序函数。我在不同的地方使用了类似的函数,这样用户就不会被绑定到特定的日期模式,函数:

function reallyParse(aDate) {
    Ext.Array.each(Ext.Date.patterns, function(pattern) {
        aDate = Ext.Date.parse(aDate, pattern)
        return aDate === null;
    });
    if (myDate !== null) {
        return false
    } else {
        // format it the way your server wants it
        return Ext.Date.format(myDate, Ext.Date.patterns.ISO8601Long)
    }
}
我所说的文档中的具体引用如下:

下面是一些标准的日期/时间模式,您可能会发现它们很有用。 它们不是Ext.Date源的一部分,但要使用它们,您可以 只需将这段代码复制到后面包含的任何脚本中 扩展日期,它们也将在该日期在全球可用 对象您可以根据需要在代码中随意添加或删除模式

Ext.Date.patterns = {
    ISO8601Long:"Y-m-d H:i:s",
    ISO8601Short:"Y-m-d",
    ShortDate: "n/j/Y",
    LongDate: "l, F d, Y",
    FullDateTime: "l, F d, Y g:i:s A",
    MonthDay: "F d",
    ShortTime: "g:i A",
    LongTime: "g:i:s A",
    SortableDateTime: "Y-m-d\\TH:i:s",
    UniversalSortableDateTime: "Y-m-d H:i:sO",
    YearMonth: "F, Y"
};
用法示例:

var dt = new Date();
console.log(Ext.Date.format(dt, Ext.Date.patterns.ShortDate));
开发人员编写的自定义格式可以通过提供 格式化和一个解析函数,执行特殊的 要求。这些函数存储在parseFunctions和 格式化函数


正如我所说,您必须添加到他们的patterns对象中,并且实现将根据您使用它的位置而有所不同,但我就是这样做的。

这是我从使用版本4.2.1的文档中找到的唯一有效答案

    Ext.Date.patterns = {
    ISO8601Long:"Y-m-d H:i:s",
    ISO8601Short:"Y-m-d",
    ShortDate: "n/j/Y",
    LongDate: "l, F d, Y",
    FullDateTime: "l, F d, Y g:i:s A",
    MonthDay: "F d",
    ShortTime: "g:i A",
    LongTime: "g:i:s A",
    SortableDateTime: "Y-m-d\\TH:i:s",
    UniversalSortableDateTime: "Y-m-d H:i:sO",
    YearMonth: "F, Y"
};


//allow max date as today
Ext.override(Ext.form.DateField, {
    submitFormat:Ext.Date.patterns.ISO8601Short
});

链接到您发现的位置会很有帮助。抱歉,这里是文档链接。请注意,这是一种危险的方法,将在整个应用程序的所有日期字段中生效