Каков правильный формат даты для столбца Дата в YUI DataTable? - PullRequest
0 голосов
/ 20 апреля 2010

Я создал таблицу данных. Все столбцы сортируются. В одном столбце есть дата, которую я отформатировал дд / мм / гггг чч: мм: сс. Это отличается от формата по умолчанию, определенного в doco , но я должен иметь возможность определить свой собственный формат для неамериканских форматов. (См. Ниже)

Класс DataTable предоставляет набор встроенные статические функции для форматирования определенные хорошо известные типы данных. В ваше определение столбца, если вы установите Форматирование столбца в YAHOO.widget.DataTable.formatDate, эта функция будет отображать данные типа Дата с синтаксисом по умолчанию "MM / DD / YYYY". Если вы хотели бы обойти встроенный форматер в пользу самостоятельно, вы можете указать столбец форматтер для пользовательской функции, которая Вы определяете.

Таблица генерируется из HTML-разметки, поэтому данные хранятся в тегах "".

Это дает мне больше подсказок о совместимых строковых датах для javascript:

В общем, RecordSet ожидает хранить данные в собственных типах JavaScript. Например, дата, как ожидается, будет экземпляр JavaScript Date, а не строка типа "26.04.2005" для того, чтобы сортировать правильно. Преобразование типов данных как данные поступают в ваш RecordSet включен через свойство анализатора в массив полей вашего источника данных responseSchema

Я подозреваю, что мне что-то не хватает в формате даты. Так что же является приемлемой строковой датой для javascript, которую Yui dataTable распознает, учитывая, что я хочу отформатировать ее как «дд / мм / гггг чч: мм: сс»?

Ответы [ 3 ]

1 голос
/ 23 апреля 2010

Определите свой язык

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");
    }
}
0 голосов
/ 17 мая 2010

Вы можете передавать даты от сервера клиенту в любом формате, который вам нужен, просто в поле DataSource.responseSchema.fields установите parser для функции, которая будет ее анализировать. Ищите stringToDate в примере динамических данных .

На стороне клиента вы можете отображать даты в любом другом формате, предоставляя функцию в поле formatter в соответствующем ColumnDefs.

Чтобы установить формат даты всего DataTable, установите опцию dateOptions; в качестве альтернативы, вы можете установить ColumnDef.dateOptions, все так же, как описано в YAHOO.util.Date.format () docs для параметра oConfig.

Для текущей локали и всей таблицы данных она должна быть

  var myConfigs = {
    initialRequest: ...
    ...
    // http://developer.yahoo.com/yui/docs/YAHOO.util.Date.html
    dateOptions: {format: '%c'} 
  };

Вы также можете установить там sLocale.

0 голосов
/ 22 апреля 2010

Javascript может построить дату, используя строку даты в следующем формате:

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

Если у вас нет контроля над форматом строки даты на стороне сервера (или вы не хотите изменять ее), напишите пользовательскую функцию синтаксического анализа, которая принимает строку даты и возвращает вновь созданный объект Date.

Вы можете использовать эту функцию синтаксического анализатора при построении данных, представленных в вашей DataTable.

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

1009 * -ИЛИ- *

Если вы используете модуль DataSource Yui (как указано вторым серым квадратом), вы можете зарегистрировать эту функцию синтаксического анализатора в поле даты, чтобы она уже была Date () до создания DataTable.

dataSource.responseSchema = {
    . . .
    fields: [
        ...
        { key: "birth_dt", parser: customParser }
        ...
    ]
    ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...