swift - 在 Swift 中设置两周时间表

标签 swift date swift2

注意:我是一名新的 Swift 程序员,如果你愿意的话,也可以说是 NOOB。

我正在创建一个学校时间表应用程序,仅供个人用来练习编码。然而,我们学校实行两周时间表系统,共 10 天,标记为 1 到 10。我想知道是否有人对如何计算出当前日期是第一天、第九天还是第四天有一些想法。我知道我可以使用 if 语句来表示日期,但这需要很长时间,并且需要手动输入日期。我怎样才能让应用程序跳过周末来记录今天是哪一天? 编辑 - 我可能有 14 天,第 6、7、13 和 14 天是空的。

例如: 当前日期是 10 月 4 日,这是第一天。我希望该应用程序能够计算出当前日期是时间表中的哪一天。然后,这将加载适当的日期(例如科目、教师、教室)。第一天是星期一,第二天是星期二,五日是星期五,六日是星期一,十日是星期五。我可以有某种排类系统吗?

很抱歉,如果问题含糊不清,请告诉我是否需要澄清。 我已经花了好几个星期的时间来修复这个问题,所以我决定寻求帮助。任何指导将不胜感激,因为我正处于死胡同!

非常感谢

最佳答案

我插入到此示例中的数字可能不符合您的要求,但请将此视为一种策略。 (在本例中,使用 1 到 14 的循环。如果您希望得到 1 到 10,您可以进行减法并在“糟糕”的日子抛出不同的错误。)

class CyclicDay {

    enum CyclicDayError: ErrorType {
        case InvalidStartDate
    }

    lazy var baseline: NSDate? = {

        // Set up some start date that matches day 1
        var components = NSDateComponents()
        components.day = 6
        components.month = 9
        components.year = 2015
        return NSCalendar.currentCalendar().dateFromComponents(components)
    }()

    func dayOfCycle(testDate: NSDate) throws -> Int {
        if let start = baseline {

            // Convert difference to days
            let interval = testDate.timeIntervalSinceDate(start)
            let days = interval / (60 * 60 * 24)

            // Convert to value 1..14 to position in a 2-week cycle
            return Int(days % 14) + 1
        }
        throw CyclicDayError.InvalidStartDate
    }
}

// Test today
let cd = CyclicDay()
let day = try cd.dayOfCycle(NSDate())

关于swift - 在 Swift 中设置两周时间表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32933137/

相关文章:

postgresql - 如何比较两个 TIMESTAMP 列以检查最多 15 分钟的差异?

ios - Swift:如何在 UIAlertController 中添加自定义输入 View ?

swift 3 : How to let a constant according to different case?

ios - UITextField - textFieldDidEndEditing 调用太迟

ios - 如何在 iOS 上将日期格式从字符串更改为 dd/mm/yy?

ios - Swift 2.0 要求未使用的框架

xcode - NSXPCInterface 构造函数无法识别 Swift 中的协议(protocol)

iOS swift : Hide and unhide Nav and tool bars

ios - 如何快速更改 UISegmentController 的索引

python - 按升序对月份名称字符串列表进行排序