【问题标题】:AS3 check if date belongs to the range?AS3检查日期是否属于范围?
【发布时间】:2015-02-19 08:40:26
【问题描述】:

我想检查给定日期是否属于两个给定日期。 日期为字符串格式,如“2015-02-19”

【问题讨论】:

  • 尝试一下,如果遇到麻烦回来,发布您的尝试并提出具体问题。我将从 Date 的文档开始。就目前而言,这个问题不适合stackoverflow。

标签: android actionscript-3 air


【解决方案1】:

如果您的所有日期格式为 YYYY-MM-DD,那么它们是按字母顺序排列的,因此您实际上可以使用普通比较运算符(<>==<=、@987654326 @), because when both operands are strings they are compared alphabetically.

所以你可以这样做:

var from:String = "2015-02-02";
var to:String = "2015-06-06";

function check(date:String):Boolean {
    return date >= from && date <= to;
}

check("2015-05-05"); // true
check("2015-01-01"); // false
check("2015-07-05"); // false
check("2014-05-05"); // false
// etc

【讨论】:

    【解决方案2】:

    首先,您需要将字符串解析为日期。您可以为此使用正则表达式。模式看起来像:/(\d\d\d\d)-(\d\d)-(\d\d)/。四位数字表示年份,两位数字表示月份,两位数字表示日。接下来,看我的代码。如果有不清楚的地方,请询问。

    var begDateStr:String = "2015-02-19";
    var midDateStr:String = "2015-04-19";
    var endDateStr:String = "2015-06-19";
    
    var begDate:Date = parseDate(begDateStr);
    var midDate:Date = parseDate(midDateStr);
    var endDate:Date = parseDate(endDateStr);
    
    if (endDate > midDate && begDate < midDate)
    {
        trace("OK");
    }
    
    function parseDate(str:String):Date
    {
        var matches:Array = str.match(/(\d\d\d\d)-(\d\d)-(\d\d)/);
    
        var d:Date = new Date();
        d.setUTCFullYear(int(matches[1]), int(matches[2]) - 1, int(matches[3]));
    
        return d;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 2013-06-11
      相关资源
      最近更新 更多