使用Swift检测ios中的时间范围

时间:2016-08-06 12:56:05

标签: ios swift nsdate nscalendar

假设我有一些显示如下消息的规则

<00>在00:00-12:00之间 - >早上

在12:01-14:00之间 - >中午

在14:01-17:00之间 - &gt;下午

在17:00-23:59之间 - &gt;晚上

如果当前的移动时间在00:00到12:00之间我应该早上到 我该怎么做才能引导。

1 个答案:

答案 0 :(得分:3)

这应该做的工作

func check(time: NSDate) -> String? {
    let formatter = NSDateFormatter()
    formatter.dateFormat = "HH:mm"
    formatter.timeZone = NSTimeZone(name: "GMT")
    guard let
        beginNoon = formatter.dateFromString("12:00"),
        beginAfternoon = formatter.dateFromString("14:00"),
        beginEvening = formatter.dateFromString("17:00")
        else { return nil }

    if time.compare(beginNoon) == .OrderedAscending { return "Morning" }
    if time.compare(beginAfternoon) == .OrderedAscending { return "Noon"}
    if time.compare(beginEvening) == .OrderedAscending { return "Afternoon" }
    return "Evening"
}

测试

check(formatter.dateFromString("10:00")!) // "Morning"
check(formatter.dateFromString("13:00")!) // "Noon"
check(formatter.dateFromString("15:00")!) // "Afternoon"
check(formatter.dateFromString("22:00")!) // "Evening"

考虑

您的范围不一致

此处您包含leftright边界

00:00-12:00 -> morning

这里只包括right边界

12:01-14:00 -> noon
14:01-17:00 -> afternoon

这里只有left边界:)

between 17:00-23:59 

在我的代码中,left边界只包含在right排除的范围内。