这个简单的代码将于11月7日在水平dateTimeAxis上的2个位置生成:
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.charts.series.LineSeries;
import mx.collections.ArrayCollection;
[Bindable]
public var ac:ArrayCollection = new ArrayCollection(
[
{completions: "11636", date: new Date(2010, 10, 7)},
{completions: "33060", date: new Date(2010, 10, 8)},
]);
]]>
</mx:Script>
<mx:Panel title="Bar Chart">
<mx:BarChart id="myChart"
dataProvider="{ac}">
<mx:horizontalAxis>
<mx:DateTimeAxis dataUnits="days"
displayLocalTime="true"/>
</mx:horizontalAxis>
<mx:series>
<mx:LineSeries xField="date" yField="completions"/>
</mx:series>
</mx:BarChart>
</mx:Panel>
</mx:Application>
将日期更改为11月8日和9日,一切都很好....
任何人都有任何想法如何解决这个问题?
答案 0 :(得分:0)
看起来它与UTC时间有关,因为它修复了它:
<mx:DateTimeAxis dataUnits="days" displayLocalTime="true" labelFunction="formatDate"/>
public function formatDate(value:Date, prev:Date, axis:IAxis):String
{
return dateFormatter.format(new Date(value.fullYear, value.month, value.dateUTC));
}
但是,我宁愿不这样做......
答案 1 :(得分:0)
首先,好的人可以放入整个应用程序代码(方便运行)。
复制并在Flex Builder 3中运行它,它给了我两个日期,11/7/10和11/8/10。你正在寻找的是什么(假设月份是零)。必须是语言环境。
这是第一个日期的调试视图,可能会检查您的详细信息(注意时间偏移)
答案 2 :(得分:0)
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="application1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
var d1:Date = new Date(2010, 10, 7);
var d2:Date = new Date(2010, 10, 8);
// put breakpoint here...
}
]]>
</fx:Script>
</s:Application>
这就是我的机器上的属性(在丹佛)(注意timezoneOffset属性。我怀疑的差异是因为11/7是夏令时):
由于某种原因,datetimeaxis与displayLocalTime = true,将d2.date转换为7而不是8。
答案 3 :(得分:0)
我在我的应用程序中使用以下函数进行日期比较,而不是使用新的Date(obj),它对我有用。你也可以尝试一下! 注意:在我的情况下,'value'参数是字符串“02/07/2011”。
private function isoToDate(value:String):Date
{
var dateStr:String=value;
dateStr=dateStr.replace(/\-/g, "/");
dateStr=dateStr.replace("T", " ");
dateStr=dateStr.replace("Z", " GMT-0000");
dateStr=dateStr.substr(0, dateStr.lastIndexOf("/"));
return new Date(Date.parse(dateStr));
}