检查当前日期字符串是否在其他两个日期的范围之内或之外

时间:2014-10-19 13:57:00

标签: cocoa-touch date swift nsdate date-formatting

我有2个日期选择器。一个用于选择开始日期,另一个用于选择有效期。选择完成后,我将日期转换为字符串格式,并将结果存储在两个文本字段中。

这是我保存到数据库的方式:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMMM d" // e.g. September 15
let sDate = dateFormatter.dateFromString(startDateField.text) as NSDate! 
let eDate = dateFormatter.dateFromString(expiryDateField.text) as NSDate!

activity["startDate"] = sDate
activity["expiryDate"] = eDate

activity.saveInBackgroundWithBlock({ (success: Bool, error: NSError!) -> Void in

我打算做的是有一个表格视图显示2个部分:一个显示活动的活动,另一个显示已过期/不在日期范围内的活动。

我想我可以通过获取当前日期并检查它是否在开始日期和到期日期范围内来完成此操作。

我从上面保存的日期显示在解析中:

enter image description here

问题是,我不想考虑年份或时间。唯一重要的是月和日。例如,活动可以在9月15日到12月20日之间每年运行一次。

我需要一种方法来检查当前日期是否在考虑当月(例如15日)的那两个日期之内。因此,今天的日期是10月19日,如果开始日期是9月15日和12月20日到期日,活动将在范围内,但如果到期日是10月18日或开始日期是,则将超出范围/操作10月25日。

总结一下:

我将在表格视图中显示两个部分。一个活动活动,另一个活动停止活动。

  1. 如何获取我存储的开始日期和到期日期并轻松检查当前日期是否在他们的范围内?

  2. 对于用户选择开始日期或到期日期的情况,我需要检查当前日期是否大于/小于开始日期(以便能够决定活动是否应该显示)或者当前日期是否大于/小于到期日(以便能够决定活动是否已经过期或已过期。

  3. 如果我可以将1和2分成一个函数并在表视图中使用它,那将是很好的。

    有兴趣了解更有经验的程序员如何实现这一目标。

1 个答案:

答案 0 :(得分:4)

您可以转换日期,而不是日期格式“MMMM d”(例如“9月15日”) 到日期格式为“MMdd”的字符串(例如“0915”)。然后你可以做一个简单的事情 当前日期,开始日期和到期日之间的字符串比较。

例如,

"0915" < "1019" < "1220"

所以10月19日是9月15日到12月20日。