【问题标题】:Compare dates from given array and two date ranges swift快速比较给定数组和两个日期范围的日期
【发布时间】:2015-07-26 23:14:14
【问题描述】:

您好,我有一个与给定日期范围进行日期比较的问题场景,场景如下:

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

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 获取这些日期之间的数据,有人可以帮我吗?

【问题讨论】:

  • 您是否已经将 filter1Date 保存为 NSDates?
  • filter1Date 的类型是 [string]()
  • 您知道如何将其转换为 [NSDate]() 吗?或者你也需要帮助?同样 fromDate 和 toDate 也必须是 NSDate()
  • 是的,我想转换。
  • 好的,我会帮助你,但你需要自己做一些事情。 Stackoverflow 不是一个你可以把所有东西都放在金盘上的页面。尝试将所有字符串转换为 NSDate() 类型。提示:stackoverflow.com/questions/2311421/…

标签: swift cocoa-touch xcode6 compare nsdate


【解决方案1】:

要比较两个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
   }
}

【讨论】:

  • 这是一个很好的答案,我只想补充一点,使用 NSCalendar.currentCalendar().compareDate(date:toDate:ToUnitGranularity) 可能会更好,这样您就可以扩展功能并进行比较只是日期(如有必要)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 2015-06-25
  • 2019-01-22
  • 1970-01-01
相关资源
最近更新 更多