Каков правильный формат даты для столбца даты в YUI DataTable?

Я составил таблицу данных. Все столбцы можно сортировать. У него есть дата в одном столбце, который я отформатировал dd/mm/yyyy hh:mm:ss . Он отличается от формата по умолчанию, определенного в документе, но у меня должна быть возможность определить свой собственный формат для неамериканских форматов. (Увидеть ниже)

Класс DataTable предоставляет набор встроенных статических функций для форматирования определенных известных типов данных. В определении столбца, если вы установите средство форматирования столбца на YAHOO.widget.DataTable.formatDate, эта функция будет отображать данные типа Date с синтаксисом по умолчанию «ММ/ДД/ГГГГ». Если вы хотите обойти встроенный модуль форматирования в пользу своего собственного, вы можете указать модуль форматирования столбца на пользовательскую функцию, которую вы определяете.

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

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

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

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


person angryITguy    schedule 19.04.2010    source источник
comment
Вы спрашиваете о правильном построении DataTable с фактическим объектом Date() для данных поля? Или вы спрашиваете, как изменить текстовый формат отображаемого ВЫВОДА?   -  person bearded_devil    schedule 23.04.2010


Ответы (3)


Определите свой регион

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");
    }
}
person Arthur Ronald    schedule 22.04.2010
comment
Это выглядит неплохо, спасибо. Даст вам знать, если это сработает. +1 только за подробное понимание YUI, хотелось бы отдать за него больше голосов! .. LOL - person angryITguy; 23.04.2010
comment
@giulio Работает нормально! Я использую данные YUI без головной боли. См. jsbin.com/ideha статью, предоставленную мной. - person Arthur Ronald; 23.04.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"]}
     ]

-OR-

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

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

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

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

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

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

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

Там же можно установить sLocale.

person Victor Sergienko    schedule 17.05.2010