比较给定数组和两个日期范围的日期

问题描述 投票:0回答:1

您好,我有一个问题情景,该情景具有给定日期范围的日期比较,该情景如下:

我有一个包含数据的数组:

var filter1Date = [String]()

filter1Date[Wed, 06 May 2015 03:44:19 GMT, Wed, 06 May 2015 03:36:27 GMT, Wed, 06 May 2015 02:56:51 GMT, Wed, 06 May 2015 01:54:25 GMT, Tue, 05 May 2015 19:17:18 GMT, Wed, 06 May 2015 02:57:59 GMT, Wed, 06 May 2015 02:07:38 GMT, Wed, 06 May 2015 01:53:14 GMT, Tue, 05 May 2015 14:30:10 GMT, Tue, 05 May 2015 14:04:34 GMT]

现在我有两个日期,分别为fromto两个日期例如:

var fromDate = "dd-MM-yyyy"
var toDate = "dd-MM-yyyy"

现在我要比较filter1Date变量数组与范围fromDatetoDate变量的数组

从此我必须从filter1Date获取数据,这些数据在这些日期之间的范围内,有人可以帮助我吗?

swift cocoa-touch xcode6 compare nsdate
1个回答
5
投票

要比较两个NSDates,可以使用NSDate.compare()方法。我为NSDate编写了扩展程序来处理此问题:

extension NSDate
{
    func isInRange(from: NSDate, to:NSDate) -> Bool
    {
        if(self.compare(from) == NSComparisonResult.OrderedDescending || self.compare(from) == NSComparisonResult.OrderedSame)
        {
            if(self.compare(to) == NSComparisonResult.OrderedAscending || self.compare(to) == NSComparisonResult.OrderedSame)
            {
                // date is in range
                return true
            }
        }
        // date is not in range
        return false
    }
}

然后您可以像这样使用它:

var dates:[NSDate] = ... // your dates array

var startDate:NSDate // your start range date
var endDate:NSDate // your end range date

for date in dates
{
   if(date.isInRange(startDate, to: endDate))
   {
      //date is in range, do something
   }
   else
   {
      //date is not in range
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.