【问题标题】:AS3 get closest date to todayAS3 获取最接近今天的日期
【发布时间】:2010-05-28 09:55:58
【问题描述】:

我有一个包含几个音乐会日期的 XML 文件。在我的 flash/AS3 文件中,我只想显示与当前日期相关的即将发生的事件。

像这样:

事件 01:2010 年 5 月 30 日

事件 02:02-06-2010

事件 03:05-06-2010

今天是 28-05-2010,所以我需要列出 Event 01。在 01-06-2010 我需要列出 Event 02。

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

有什么想法吗? 谢谢。

【问题讨论】:

    标签: xml flash actionscript-3 date


    【解决方案1】:

    为每个日期构造 Date 对象并比较它们的 getTime() 值 - 这是自 1970 年 1 月 1 日以来经过的毫秒数。

    【讨论】:

    • 谢谢阿马戈什。与此同时,我想出了另一种方法,所以我没有尝试你的……但还是谢谢!
    【解决方案2】:

    我想这可行:

    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 中的日期对象。

    如果有人感兴趣,我可以发布整个代码。而且我也有更好的方法!

    【讨论】:

    • 你确定数组中的日期会被排序吗?如果日期未排序,这将不起作用。另外,我不确定比较是如何工作的——它是使用toString(在这种情况下你不应该使用它——它会失败)还是time
    • 好吧,您对排序是正确的,但是日期是在 XML 中排序的,因此对于这个例子来说它可以工作。比较是使用日期对象,我认为这是最好的方法
    猜你喜欢
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2018-04-24
    • 2021-07-30
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多