ExtJS DateField使用不同的显示格式

时间:2009-08-11 08:13:25

标签: javascript extjs

我在ASP.NET MVC Web应用程序中使用ExtJS DateField控件。

我已将format属性设置为“Ymd”,因此它将从服务器正确解析“2009-08-11”格式,并且还会以该格式将其发回。

但是,我想以不同的,更加用户友好的格式显示数据,特别是西班牙语中的“d mmm yyyy”。

我似乎无法弄清楚如何做到这一点。我不认为altFormats属性有帮助,因为这只会增加更多的解析格式。

是否可以使用不同的显示格式的解析格式?或者我是以错误的方式解决这个问题?

4 个答案:

答案 0 :(得分:6)

是肯定的。这是可能的。

请参阅http://extjs.com/deploy/dev/docs/?class=Date了解日期格式。

有关可以自定义的内容,请参阅ext-3.0.0 \ src \ locale \文件夹。包含相应的文件或仅使用文件作为模板自定义您自己的文件。

例如:

Date.monthNames = [
   "Januar",
   "Februar",
   "Marec",
   "April",
   "Maj",
   "Junij",
   "Julij",
   "Avgust",
   "September",
   "Oktober",
   "November",
   "December"
];

Date.dayNames = [
   "Nedelja",
   "Ponedeljek",
   "Torek",
   "Sreda",
   "Četrtek",
   "Petek",
   "Sobota"
];

console.log((new Date()).format('Y-M-D'))

此致 约书亚

答案 1 :(得分:4)

实际上,format配置用于解析和设置显示格式。只要altFormats包含您希望支持解析的所有可能的数据格式(默认值包括Y-m-d),您应该可以执行以下操作:

Ext.onReady(function(){
    new Ext.form.DateField({
        format: 'd F Y', // 'd mmm yyyy' is not valid, but I assume this is close?
        width: 200,
        renderTo: Ext.getBody(),
        value: '2009-08-11'
    });
});

答案 2 :(得分:1)

为了澄清我的理解,你有一个日期字段:

  1. 需要在服务器上进行解析,格式为Y-m-d
  2. 您希望使用Spaninsh月份名称
  3. 以d mmm yyyy格式显示日期

    根据我的理解,我最初的反应是你可以设置你的分机日期字段来格式化和验证第二种格式('d mmm yyyy')使用格式配置选项(格式:'d mmm yyyy') 。然后你将它发送回服务器,控制器动作(我猜),作为字符串参数而不是DateTime。然后在您的控制器操作中解析日期字符串并使用以下命令转换它:

     DateTime.ParseExact(myDate, 'd mmm yyyy',  CultureInfo.CurrentCulture)
    

    或类似,然后你可以将它转换为你喜欢的那个日期对象的任何格式。

    这只会在浏览器的Date字段中留下缩写名称。我不完全确定Ext如何处理这个但是我不知道能够覆盖日期格式并强制它使用Ext / Javascript中的特定文化,所以我希望你会在浏览器/操作系统的怜悯,而无需自己写一些东西。

    更新:

    结合Joshua给出的月/日名称示例,可以为您提供所需的解决方案。

    我希望有所帮助。

答案 3 :(得分:0)

您可能对DateField和TimeField的这些插件感兴趣: http://www.rahulsingla.com/blog/2010/05/extjs-date-time-field-plugins-for-efficient-data-entry