2014-10-27 22 views
0

所以我有一个对象(活动),我允许用户选择一个活动的开始日期和到期日期。如何确定当前日期是否在不包括一年的两个日期的范围之内/之外?

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

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

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

问题:

我不得不做出改变,所以现在用户必须选择一个每月只有一天。这是好的,直到他们选择像11月1日至2月28日之类的东西。 这些日期将采用格式1101和2802.

没有这一年,这显然给了我不同的结果。有了这一年,我可以确定2月28日的有效期是开始日期之后的一年,而不是同一年。然后,在确定当前日期是否在开始日期和到期日期之内时,我会得到预期的结果。如果没有这一年,到期日现在实际上不会超过开始日期,即使它应该是。

目前我在做什么

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

如果只选择了过期日期,那么活动将保持活动状态,直到达到过期日期。即使我设定和有效期为2月28日,我们在11月。同样的需求也适用于开始日期。

希望能在这里有所了解。

谢谢你的时间。

+0

如果你把月份放在第一位(正如我在上一个问题http://stackoverflow.com/a/26451356/1187415的答案中所建议的那样),那么你的开始=“1101”和到期=“0228”,并且很容易发现到期日在下一年。 – 2014-10-27 20:05:41

+0

我目前把这个月放在第一位,并且遇到了上面提到的问题。然后,我决定改为包括一年,但现在我只能使用月和日。我现在很难提出用一年的时间来检测下一年的逻辑。今天是1027,所以我们假设我们想要使用上面的开始日期和到期日期。下个月(比如1102)将大于1101,但也大于0228,这意味着它不会在开始和结束日期的范围内。这是我的问题。 – LondonGuy 2014-10-27 20:11:28

+0

任何你不能用分隔符分隔m/d并将它们存储在数组中的原因?你最终会得到'@ [@(11),@(02)]',你会知道第一个对象是一天,而第二个是这个月。 – brandonscript 2014-10-27 20:13:05

回答

3

这里我的建议(以伪代码):将所有日期字符串格式为“月日”,在 你的榜样

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

如果startDate <= expiryDate那么范围是在同一年度内,你可以检查 当前日期

if (startDate <= currentDate && currentDate <= expiryDate) ... 

否则的范围内开始在一年,在明年结束,你

检查0
if (currentDate >= startDate || currentDate <= expiryDate) ... 
+0

谢谢你会尝试并报告回来。 – LondonGuy 2014-10-27 23:31:13

相关问题