我有一个获得RSS Feed的Flex Mobile应用,时区不正确。我希望它能在CST中部时间。需要格式化时区。我已粘贴下面的工作代码,但需要修复时区问题。
<?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 :(得分:0)
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>