Flex Builder смещение часового пояса dateFormatter - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть приложение Flex Mobile, которое получает RSS-канал и часовой пояс неверен.Я хотел бы, чтобы это было в CST Central Time.Нужно отформатировать часовой пояс.Я вставил рабочий код ниже, но мне нужно исправить проблему с часовым поясом.

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:ns1="*"
        backgroundColor="#74171E" title="Mediacom 2 / Paulbunyan 32"
        viewActivate="refresh()">

    <fx:Script>
        <![CDATA[
            protected function getData():void
            {
                getDataResult.token = iCTVChannel232.getData();
            }
            public function refresh(): void {
                getData();
            }
            private function dateFormat(item:Object,column:GridColumn):String
            {
                return pubDateFormatter.format(item.pubDate);
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <s:DateTimeFormatter id="pubDateFormatter" useUTC="false" dateTimePattern="MM-dd K:mm a"/>
        <s:CallResponder id="getDataResult"/>
        <ns1:ICTVChannel232 id="iCTVChannel232"/> 
    </fx:Declarations>
    <s:DataGrid id="dataGrid" left="10" right="10" top="10" bottom="10">
        <s:columns>
            <s:ArrayList>
                <s:GridColumn dataField="pubDate" width="80" headerText="Date" labelFunction="dateFormat"></s:GridColumn>
                <s:GridColumn dataField="title" headerText="title"></s:GridColumn>
            </s:ArrayList>
        </s:columns>
        <s:AsyncListView list="{getDataResult.lastResult}"/>

    </s:DataGrid>
    <s:actionContent>
        <s:Button icon="@Embed('/assets/refreshico.png')"
                  click="Object(navigator.activeView).refresh()"/>
    </s:actionContent>

1 Ответ

0 голосов
/ 01 февраля 2012

Объект Date во Flash всегда настроен на время компьютера.Если компьютер уже находится в часовом поясе CDT, тогда будет просто получить любое свойство от объекта.Однако, если вы хотите выполнить «преобразование» часового пояса в часовой пояс, который не установлен на компьютере, вы можете получить время UTC и сместить его следующим образом для CDT:

var date:Date = new Date();
var timezone:int = -5;
date.hours = date.hoursUTC + timezone;

Однако вымы пытаемся получить фактическое время CDT, которое работает только летом в определенных областях.Для этого невозможно, чтобы Flash точно знал, когда это происходит, ЕСЛИ БЕЗ кодирования исключений (т. Е. Если между этой датой и этой датой введите -6, в противном случае - -5), а также вам необходимо знать фактическое местоположение пользователя.(что невозможно через Flash, если пользователь не предоставит вам эту информацию).

<fx:Script>
        <![CDATA[
            protected function getData():void
            {
                getDataResult.token = iCTVChannel232.getData();
            }
            public function refresh(): void {
                getData();
            }
            private function dateFormat(item:Object,column:GridColumn):String
            {
                var date:Date = item.pubDate;
                var timezone:int = -5;
                date.hours = date.hoursUTC + timezone;
                return pubDateFormatter.format(date);
            }
        ]]>
    </fx:Script>
...