YUI DataTable中Date列的正确日期格式是什么?

时间:2010-04-19 21:57:42

标签: datatable yui date-format

我制作了一个数据表。所有列都是可排序的。它在一列中有一个日期,我格式化为dd / mm / yyyy hh:mm:ss。这与doco中定义的默认格式不同,但我应该能够为非美国格式定义自己的格式。 (见下文)

  

DataTable类提供了一组   内置静态函数进行格式化   某些众所周知的数据类型。在   您的列定义,如果您设置了   列的格式化程序为   YAHOO.widget.DataTable.formatDate,   该函数将呈现类型的数据   日期的默认语法为   “MM / DD / YYYY”。如果你愿意的话   绕过内置格式化器   你可以指出一个专栏   formatter到自定义函数   你定义。

该表是从HTML标记生成的,因此数据保存在“”标记内。

这给了我更多关于javascript的兼容字符串日期的线索:

  

通常,RecordSet期望   保存本机JavaScript类型的数据。   例如,预计会有一个日期   一个JavaScript Date实例,而不是一个   像“4/26/2005”这样的字符串   排序正确。转换数据类型   当数据进入你的RecordSet时   通过解析器属性启用   DataSource的fields数组   responseSchema

我怀疑我错过了日期格式的内容。那么ji的可接受的字符串日期是什么,Yui dataTable会识别,因为我想将它格式化为“dd / mm / yyyy hh:mm:ss”?

3 个答案:

答案 0 :(得分:1)

定义您的语言区域

YAHOO.util.DateLocale["pt-BR"] = YAHOO.lang.merge(YAHOO.util.DateLocale, {
    x:"%d/%m/%Y"
});

您的列设置如下

{key:"columnKey", label:"columnLabel",  
    formatter:function(container, record, column, data) {
        container.innerHTML = YAHOO.util.Date.format(data, {format:"%x"}, "pt-BR");
    }
}

答案 1 :(得分:0)

Javascript能够使用以下格式的日期字符串构建日期:

new Date("April 22, 2010 14:15:23");

如果您无法控制服务器端的datestring格式(或者不想更改它),请编写一个自定义解析函数,该函数接受datestring并返回一个新构造的Date对象。

您可以在构造DataTable中表示的数据时使用此解析器函数。

rows:[{name:"John",born:customParser("[date string here"]},
      {name:"Bill",born:customParser("[date string here"]}
     ]

-OR -

如果您正在使用Yui的DataSource模块(如第二个灰色框所示),您可以在日期字段中注册此解析器函数,以便在构造DataTable之前它已经是Date()。

dataSource.responseSchema = {
    . . .
    fields: [
        ...
        { key: "birth_dt", parser: customParser }
        ...
    ]
    ....
}

答案 2 :(得分:0)

您可以以任何您希望的格式将日期从服务器传递到客户端,只需在DataSource.responseSchema.fields设置parser字段中将其解析为将要解析它的函数。在dynamic data example中查找stringToDate

在客户端,您可以以任何其他格式显示日期,在相应formatter的{​​{1}}字段中提供功能。

要设置整个DataTable的日期格式,请设置其ColumnDefs选项;或者,您可以设置dateOptions,与YAHOO.util.Date.format() docs中描述的oConfig参数相同。

对于当前的语言环境和整个DataTable,它应该是

ColumnDef.dateOptions

你也可以在那里设置sLocale。