Извлечение соответствующей информации. из даты/отметки времени в Adobe Flex с объектом строки

У меня есть этот код:

var dp:Array = new Array();

for ( var i:int = 0; i < e.result.length; i++ )
{
        var row:Object = e.result[i];

           dp.push( row  );
}

Объект строки содержит данные для разных столбцов сетки данных. dp.push(row) помещает данные в сетку данных.

Столбцы с индексом 3 и 4 имеют тип «ДАТА» с отображением всей отметки времени. Есть ли какой-либо метод во flex, который поможет мне извлечь месяц/день/год из даты или метки времени, если на то пошло.

Если да, то как это сделать в коде.

Пожалуйста помоги.


person user120118    schedule 01.07.2009    source источник


Ответы (2)


После повторного прочтения вашего вопроса, похоже, вы хотите изменить отображение объекта даты в самой сетке данных? Для этого вам следует рассмотреть использование labelFunction. для DataGridColumn, отображающего экземпляр Date.

<mx:DataGridColumn labelFunction="dateFormatLabelFunction" />

private function dateFormatLabelFunction( item:Object, column:DataGridColumn ):String 
{ 
    return item.date.day + "/" ; //...
} 

Либо используйте DateFormatter для форматирования дата в функции метки:

<mx:DateFormatter id="dateFormatter" format="MM/DD/YYYY" />

private function dateFormatLabelFunction( item:Object, column:DataGridColumn ):String 
{ 
    return dateFormatter.format( item.date );
} 

EDIT: Согласно комментариям, пример кода комбинированного подхода будет выглядеть примерно так:

<mx:Script>
    <![CDATA[
        private function dateFormatLabelFunction( item:Object, column:DataGridColumn ):String 
        { 
            return dateFormatter.format( item[ column.dataField ] );
        } 
    ]]>
</mx:Script>

<mx:DateFormatter id="dateFormatter" format="MM/DD/YYYY" />

<mx:DataGrid ...>
    <mx:columns>
        <mx:DataGridColumn dataField="myDateField" labelFunction="dateFormatLabelFunction" />
    </mx:columns>
</mx:DataGrid>
person darronschall    schedule 01.07.2009
comment
Если мне придется использовать второй вариант, где именно я должен написать тег DateFormatter ?? ‹mx:DataGridColumn width=75 dataField=myDate headerText= Date editable=false/› Это моя колонка Datagrid, где я должен написать дату. Как мне использовать тег DateFormatter с этим, а также убедиться, что источник передан правильно?? - person user120118; 01.07.2009
comment
Во втором примере также используется функция метки для столбца сетки данных. Я просто показывал вам, как использовать класс DateFormatter для форматирования даты внутри функции метки, а не делать это вручную, как в первом примере. Самый простой способ — определить ‹mx:DateFormatter /› где-нибудь в вашем файле .mxml. Я отредактирую этот ответ, чтобы лучше описать комбинированный подход. - person darronschall; 01.07.2009
comment
Я попробовал предоставленный код. Но компиляция выдает ошибку, говорящую «нуль». Исключение java.lang.nullPointer. Синтаксис правильный? - person user120118; 02.07.2009
comment
Кроме того, сетка данных — это мой тег верхнего уровня, так как он у меня есть как отдельный компонент. Внутри этого ‹?xml version=1.0 encoding=utf-8?› ‹mx:DataGrid createdComplete=init() itemClick=itemClickEvent(event)› ‹mx:DateFormatter id=dateFormatter formatString=MM/DD/YYYY /› ‹mx: Метаданные› [Event(name=myEvent, type=utils.myEvent)] ‹/mx:Metadata› . . . . . Это правильное расположение тега dateFormatter? - person user120118; 02.07.2009
comment
Спасибо. На самом деле код правильный. Была какая-то другая ошибка. Спасибо. - person user120118; 02.07.2009

В библиотеке as3corelib есть служебный класс для преобразования строк меток времени в экземпляры Date. Попробуйте использовать класс DateUtil. , в частности один из методов parse, например parseW3CDTF.

Из полученного экземпляра Date можно изучить отдельные свойства даты, а затем .

var dt:Date = DateUtil.parseW3CDTF( timestamp );
trace( dt.year );
person darronschall    schedule 01.07.2009
comment
я не могу напрямую извлечь и изменить объект строки? Будет ли это работать :: if(row.columnIndex==3) { row.data=(row.data).getFullYear(); } ?? - person user120118; 01.07.2009