2010-05-28 130 views
1

我有一个演唱会日期的XML文件。在我的flash/AS3文件中,我只想显示相对于当前日期的即将到来的事件。AS3距离今天最近的日期

像这样:

事件01:30-05-2010

事件02:2010年2月6日

事件03:2010年5月6日

今天是28 -05-2010,所以我需要列出事件01.在01-06-2010我需要列出事件02.

我有基本的AS3代码列出的XML工作,但我有麻烦过滤结果。

任何想法? 谢谢。

回答

1

构建每个日期Date对象和比较它们的getTime()值 - 这是自1月1日通过的毫秒数,1970年

+0

谢谢你Amarghosh。与此同时,我想出了另一种方式,所以我没有尝试过你......不过谢谢! – fana 2010-05-28 10:49:47

0

我想这个作品:

var my_date:Date = new Date(); 
var dia:Date = new Date(my_date.fullYear,my_date.month,my_date.date); 
//var dia:Date = new Date(2010,05,06); 
var nowEvent1:Date = new Date(2010,04,30); 
var nowEvent2:Date = new Date(2010,05,02); 
var nowEvent3:Date = new Date(2010,05,05); 
var nowEvent4:Date = new Date(2010,05,06); 

var eventArray:Array = [nowEvent1,nowEvent2,nowEvent3,nowEvent4]; 

for (var i:int; i < eventArray.length; i++) { 
    if (eventArray[i] >= dia) { 
     trace(eventArray[i]); 
     return; 
    } 
} 

这只是一个硬编码的样本值(因为XML代码太大),但它似乎正在工作。更改“dia”变量将返回正确的即将到来的事件日期。

在我的代码中,我从由PHP设置的flashvar获取当前日期,然后将其转换为Flash中的日期对象。

如果有人有兴趣,我可以张贴整个代码。而且我也尝试过更好的方式!

+0

你确定数组中的日期将被排序吗?如果日期没有排序,这将不起作用。另外,我不知道比较是如何工作的 - 它使用'toString'(在这种情况下,你不应该使用这一点 - 它会失败)或'time'? – Amarghosh 2010-05-28 11:05:02

+0

以及你说得对排序,但日期是在XML排序所以对于本例,将工作。使用日期的对象,这一点我觉得比较会是最好的方式 – fana 2010-05-28 11:25:57