2012-01-31 69 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