2012-01-31 42 views
0

我有一个Flex移动应用程序获取rss提要和时区不正确。我希望它在CST中央时间。需要格式化时区。我粘贴了以下工作代码,但需要修复时区问题。Flex Builder dateFormatter时区偏移量

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

回答

0

Flash中的Date对象总是被设置为计算机的时间设置。如果计算机已经在CDT时区,那么只需从对象中获取任何属性即可。但是,如果你想要做一个时区“转化”成计算机未设置为一个时区,你可以得到UTC时间和偏移像这样的CDT:

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

但是,你想以获得实际的CDT时间,该时间仅在某些地区的夏季有效。为此,Flash无法确切地知道何时该编码异常(即,如果在此日期和该日期之间,执行-6,否则执行-5),并且还需要知道用户的实际位置(除非用户给你提供这些信息,否则这是不可能的)。

<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> 
+0

的应用程序是一个小面积的目标。我们是明尼苏达州的公共电视台,该应用程序适用于我们的观看区域。 – 2012-02-01 14:51:28

+0

我是flex的新手,能否帮助我在上面的例子中放置代码。我试图放置 – 2012-02-01 14:52:35

+0

尝试编辑的版本。 – ShaunOReilly 2012-02-01 22:21:32