Flex Builder dateFormatter时区偏移量



我有一个Flex Mobile应用程序,它得到了rss提要,时区不正确。我希望它在美国中部时间。需要格式化时区。我已经在下面粘贴了工作代码,但需要修复时区问题。

<?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>

Flash中的Date对象始终设置为计算机的时间设置。如果计算机已经在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>

相关内容

  • 没有找到相关文章

最新更新