2014-10-27 149 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

相關問題