如何确定当前日期是否在不包括一年的两个日期范围之内/之外?

时间:2014-10-27 19:54:34

标签: objective-c swift nsdate nsdateformatter nscalendar

所以我有一个对象(Activity),我允许用户选择活动的开始日期和到期日期。

用户基本上是一个为公众提供活动的中心/中心。

他们可以选择让这些活动成为季节性的。例如,活动可以从2月1日到6月22日。我使用当前日期和一堆代码来确定活动是否在季节中。

例如,我检查当前日期271014是否大于开始日期020114并且小于失效日期062214.如果是,则表示日期在范围内。

问题:

我必须进行更改,因此现在用户必须只选择一个月和一天。这是好的,直到他们选择11月1日至2月28日之类的东西。 这些日期的格式为1101和2802。

没有这一年,这显然给了我不同的结果。随着这一年,我可以确定2月28日的到期日是开始日期之后的一年,而不是同一年。然后在计算当前日期是否在开始日期和到期日期之前我得到了预期的结果。没有年份,有效期实际上并不大于开始日期,即使应该是。

我目前正在做什么

如何解决此问题?我真正需要的是允许用户设置开始日期和到期日。仅当当前日期在范围内时,活动才会显示在表格视图中。

如果仅选择了失效日期,则活动将保持活动状态,直到达到失效日期。即使我在2月28日设定和到期日,我们也在11月。同样的需要也适用于开始日期。

在此欣赏一些见解。

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

这里我的建议(伪代码):将所有日期转换为格式为" MMdd",in的字符串 你的例子

startDate   = "1101"  // November 1
expiryDate  = "0228"  // February 28
currentDate = "1027"  // October 27

如果startDate <= expiryDate,则范围在同一年内,您可以查看

的当前日期
if (startDate <= currentDate && currentDate <= expiryDate) ...

否则范围从一年开始到下一年结束,您可以查看

if (currentDate >= startDate || currentDate <= expiryDate) ...