【发布时间】:2014-10-27 19:54:34
【问题描述】:
所以我有一个对象(活动),允许用户在其中选择活动的开始日期和到期日期。
用户基本上是一个为公众提供活动的中心/中心。
他们可以选择让这些活动成为季节性活动。例如,一个活动可以从 2 月 1 日到 6 月 22 日进行。我使用当前日期和一堆代码来确定该活动是否在季节。
例如,我检查当前日期 271014 是否大于开始日期 020114 并且小于到期日期 062214。如果是,则表示日期在范围内。
问题:
我不得不进行更改,所以现在用户必须只选择月份和日期。这很好,直到他们选择像 11 月 1 日到 2 月 28 日这样的时间。 这些日期的格式为 1101 和 2802。
如果没有年份,这显然会给我带来不同的结果。有了这一年,我就可以确定 2 月 28 日的到期日是开始日期之后的一年,而不是同一年。然后,当确定当前日期是否在开始日期和到期日期内时,我会得到预期的结果。没有年份,到期日期现在实际上不大于开始日期,即使它应该是。
我目前在做什么
我该如何解决这个问题?我真正需要的是允许用户设置开始日期和到期日。仅当当前日期在范围内时,活动才会显示在表格视图中。
如果仅选择了到期日期,则活动将保持活动状态,直到达到该到期日期。即使我设定和到期日期为 2 月 28 日,而我们是在 11 月。同样的需求也适用于开始日期。
希望能在这里提供一些见解。
感谢您的宝贵时间。
【问题讨论】:
-
如果你把月份放在第一位(正如我在回答你之前的问题 stackoverflow.com/a/26451356/1187415 中建议的那样),那么你有 start="1101" 和 expiry="0228",这很容易检测到有效期是在下一年。
-
我目前把月份放在首位,遇到了上面提到的问题。然后我决定也切换到包括年份,但现在我只能使用月份和日期。我很难想出在没有一年的情况下检测明年的逻辑。今天是 1027,所以假设我们想使用上面的开始日期和到期日期。下个月(比如 1102)将大于 1101 但也大于 0228,这意味着它不会在开始和结束日期的范围内。这是我的问题。
-
有什么理由不能用各种分隔符分隔 m/d 并将它们存储在数组中?您最终会得到
@[@(11), @(02)],并且您会知道第一个对象是日期,而第二个对象是月份。
标签: objective-c swift nsdate nsdateformatter nscalendar