barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

понедельник, 19 декабря 2011 г.

Formatter и parser даты в российском формате для YUI

YAHOO.widget.DataTable.formatDate использует американский формат отображения даты (ММ/ДД/ГГГГ), поэтому пришлось написать свой formatter для отображения дат по-русски  (ДД.ММ.ГГГГ):
var rusDateFormatter =  function(elCell, oRecord, oColumn, oData)
        {
            function addLeadingZero(num)
            {
                if(num<10)
                    return "0"+num;
                else
                    return num;
            }
         
            var date = new Date(oData);
            elCell.innerHTML = addLeadingZero(date.getDate())+"."+addLeadingZero(date.getMonth()+1)+"."+date.getFullYear();
        }
Этот formatter можно использовать при объявлении колонок DataTable:
var myCols = [
{
key: "someDate",
label: "Какая-то дата",
editor: new YAHOO.widget.DateCellEditor(),
formatter: rusDateFormatter
}
];
Тоже самое с парсером: YAHOO.util.DataSource.parseDate (или просто "date") умеет парсить только американские даты, т.к. используется Date.parse() JavaScript`а. Поэтому пришлось использоваться свой парсер:

var rusDateParser = function(oData)
{
    var parts = oData.toString().split('.');
    return new Date(parts[1]+"/"+parts[0]+"/"+parts[2]);
}
Теперь его можно использовать при задании схемы данных:
myDataSource.responseSchema =
    {
    fields: [
            {key:"someDate",parser:rusDateParser}
            ]
    }
UP: по крайней мере написание собственного formatter`а можно заменить передачей в качестве доп. опций конструктора DataTable:
dateOptions:{format:'%d.%m.%Y'} 

Комментариев нет:

Отправить комментарий