2012-01-31 2 views
0

J'ai une application Flex Mobile qui reçoit un flux RSS et le fuseau horaire est incorrect. Je voudrais qu'il soit en heure centrale du CST. Besoin de formater le fuseau horaire. J'ai collé le code de travail ci-dessous, mais je dois corriger le problème du fuseau horaire.Flex Builder dateFormatter timezone offset

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

Répondre

0

L'objet Date Flash est toujours à temps les paramètres de l'ordinateur. Si l'ordinateur est déjà dans le fuseau horaire de CDT, il suffit d'obtenir une propriété de l'objet. Toutefois, si vous voulez faire un fuseau horaire « conversion » dans un fuseau horaire que l'ordinateur n'est pas, vous pouvez obtenir le temps UTC et le décalage comme ceci pour CDT:

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

Cependant, vous essayez pour obtenir l'heure réelle CDT, qui ne fonctionne que pendant l'été dans certaines régions. Pour cela, il est impossible pour Flash de savoir exactement quand c'est à moins de coder les exceptions (par exemple si entre cette date et cette date, faites -6, sinon faites -5) et vous devez également connaître l'emplacement réel de l'utilisateur (ce qui est impossible via Flash à moins que l'utilisateur ne vous donne cette information).

<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

L'application est ciblée pour une petite zone. Nous sommes une station de télévision d'accès public dans le Minnesota et l'application est destinée à notre zone de visualisation. –

+0

Je suis nouveau à flex pourriez-vous m'aider avec le placement du code dans l'exemple ci-dessus. J'ai essayé de placer –

+0

essayer la version éditée. – ShaunOReilly