如何知道一个事件是否持续数月

时间:2018-05-13 21:58:53

标签: ios swift

应用概述

我正在Swift中构建一个显示事件列表的iOS应用程序。我为事件提供的数据显示了事件的名称,开始日期(日,月,年)和结束日期(日,月,年)。

从Firebase提取数据时,我会查看开始和结束月份,并在表格视图中显示相应月份的事件。数据按月显示,因此查看May的用户只能看到May事件,并且必须选择不同的月份来查看该月的事件。

问题

有些事件持续了几个月。例如,如果某个活动在7月开始并在9月结束,那么我当前的实施将不会显示8月份的活动。

可能的解决方案

我正在寻找一种优雅的方式来以编程方式检查这种情况并确保它在正确的月份显示,而不是手动操作数据以说明它们之间的月份。

如果您有任何建议,请告诉我。这是我正在考虑的解决方案:

  1. 添加一个Bool数据点,说明事件是否延伸了几个月。当显示特定月份的事件时,检查所有这些事件以查看所选月份是否大于事件的开始月份且小于事件的结束月份。
  2. 如果事件从一年延伸到下一年,则会发生故障。我需要添加额外的逻辑来处理它。

3 个答案:

答案 0 :(得分:0)

听起来您只是将显示的月份与活动的开始月份和活动的结束月份进行比较。

在没有任何细节的情况下,确定是否在显示的月份中显示事件的基本逻辑是查看显示的月份是否大于或等于事件开始月份且小于或等于偶数月份。

在伪代码中基本上是:

if displayMonth >= event.startMonth && displayMonth <= event.endMonth {
    // show event
}

当然,这也需要考虑到这一年。

答案 1 :(得分:0)

除了检查月份,您还需要检查年份。例如:

// Check start date
if (displayYear == event.startYear && displayMonth >= event.startMonth) || displayYear > event.startYear {
    // Check end date
    if (displayYear == event.endYear && displayMonth <= event.endMonth) || displayYear < event.endYear {
        // show event
    }
}

如果您需要有关此代码的更多信息或说明,请与我们联系

答案 2 :(得分:-1)

比较日期对您有用。

将当前日期与开始日期和结束日期进行比较。

当前日期应大于开始日期且小于结束日期。

以下是日期比较的代码片段

如果currentDate.compare(startingDate)== .OrderedAscending&amp;&amp; currentDate.compare(endingDate)==。 OrderedIcending {

//您的事件代码将在此处发布。

}