我制作了一个数据表。所有列都是可排序的。它在一列中有一个日期,我格式化为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”?
答案 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。